<p>感知方式。你知道吗</p>
<p>请注意,<code>join()</code>保存了最后一次迭代的测试(可怕的)或剥离尾部空白。(丑)</p>
<p>当然,您必须从文件中加载数据,而不是使用现成的字符串<code>DATA</code>,但这应该不是一个太大的任务。你知道吗</p>
<p>要从配置文件中解析<code>threshold</code>,还可以使用<code>re</code>或纯字符串<code>split()</code>函数。你知道吗</p>
<pre><code>import re
DATA = '''
31 32 19 11 15 30 35 37
12 34 39 45 66 78 12 7
76 32 8 2 3 5 18 32 48
99 102 3 46 88 22 25 21
fd zz er 23 44 56 77 99
44 33 22 55 er ee df 22
'''
PLACEHOLDER = ' '
DISCOUNT_MARKER = '$'
VOID_MARKER = '?'
SEP = PLACEHOLDER # your mileage may vary
def dump(x, threshold):
s = None
try:
if int(x) < threshold:
s = DISCOUNT_MARKER
else:
s = PLACEHOLDER
except ValueError:
s = VOID_MARKER
return s
if __name__ == '__main__':
threshold = 30 # gather that from the config file
for line in DATA.splitlines()[1:]:
print(SEP.join(
map(lambda x: dump(x.group(0), threshold),
re.finditer('(\w+)', line)
)
))
</code></pre>
<p>输出:</p>
<pre><code> $ $ $
$ $ $
$ $ $ $ $
$ $ $ $
? ? ? $
$ ? ? ? $
</code></pre>