如何为每个句子创建一个循环

时间:2017-02-21 15:26:48

标签: python python-2.7 python-3.x

我有一个字典程序,但在输出结果时有问题,我想要每个句子的结果。

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

2 个答案:

答案 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
'''