我有一个字典程序,但在输出结果时有问题,我想要每个句子的结果。
dict_file = """water=45
melon=8
apple=35
pineapple=67
I=43
to=90
eat=12
tastes=100
sweet=21
it=80
watermelon=98
want=70
juice=88"""
conversion = {k: int(v) for line in dict_file.split('\n') for (k,v) in (line.split('='),)}
text = """I want to eat banana and watermelon
I want drink juice purple and pineapple
it tastes sweet pineapple"""
result= ', '.join(str(conversion[word]) for word in text.split() if word in conversion)
print(result)
输出:
43, 70, 90, 12, 98, 43, 70, 88, 67, 80, 100, 21, 67
我想输出:
43, 70, 90, 12, 98
43, 70, 88, 67
80, 100, 21, 67
答案 0 :(得分:2)
text.split()
拆分所有空格,删除换行符。首先拆分换行符('\n'
),然后拆分任何剩余的空格。用逗号重新加入你在空白上拆分的内容。使用换行符重新加入你用换行符分割的内容。
result = '\n'.join(
', '.join(str(conversion[word]) for word in line.split() if word in conversion)
for line in text.split('\n'))
如果您更改str(conversion[word])
的定义,则可以将conversion[word]
更改为conversion
:
# replaced int(v) with v.strip()
conversion = {k: v.strip() for line in dict_file.split('\n') for (k,v) in (line.split('='),)}
我更喜欢这个定义:
conversion = dict(line.strip().split('=') for line in dict_file.split('\n'))
这是一种以不同方式处理缺失值的变体:
result = '\n'.join(
', '.join(conversion.get(word, '--') for word in line.split())
for line in text.split('\n'))
print(result)
给出了
43, 70, 90, 12, --, --, 98
43, 70, --, 88, --, --, 67
80, 100, 21, 67
答案 1 :(得分:0)
就个人而言,可读性比简洁更重要。
for line in text.split('\n'):
s = ', '.join(str(conversion[word]) for word in line.split() if word in conversion)
print(s)
# Output
'''
43, 70, 90, 12, 98
43, 70, 88, 67
80, 100, 21, 67
'''