我在执行以下代码时遇到语法错误。 我想在列表中打印理解。 如您所见,我使用print()尝试了另一种方法(注释掉了行)。但我认为这种语法在python3中是受支持的,因为Python的早期版本将print视为一个语句。在
1 import sys
2 import nltk
3 import csv
4 from prettytable import PrettyTable
5 CSV_FILE = sys.argv[1]
6 # Handle any known abbreviations, # strip off common suffixes, etc.
7 transforms = [(', Inc.', ''), (', Inc', ''), (', LLC', ''), (', LLP', '')]
8 csvReader = csv.DictReader(open(CSV_FILE), delimiter=',', quotechar='"')
9 contacts = [row for row in csvReader]
10 companies = [c['Company'].strip() for c in contacts if c['Company'].strip() != '']
11 for i in range(len(companies)):
12 for transform in transforms:
13 companies[i] = companies[i].replace(*transform)
14 #fields=['Company', 'Freq']
15 #pt = PrettyTable(fields=fields)
16 #pt.set_field_align('Company', 'l')
17 fdist = nltk.FreqDist(companies)
18 #[pt.add_row([company, freq]) for (company, freq) in fdist.items() if freq > 1]
19 #[print("["+company+","+freq+"]") for (company, freq) in fdist.items() if freq > 1]
20 [print company for (company, freq) in fdist.items() if freq > 1]
21 #pt.printt()
~
另一个答案是:不要这样做。使用},因为这将使您的程序IO绑定。在
for
循环。不需要在内存中具体化None
的列表。print函数返回None,从函数编程的角度来看,打印只是一个副作用。如果需要打印,请使用for循环,因为不需要在内存中具体化列表。如果您需要None
的列表,请使用None
,而不是{如果你两者都需要,那么你可以很容易地把你不需要的那一个去掉。在
它不是python3中的print语句,而是一个函数。在
并返回:
^{pr2}$正如蒂姆·彼得斯所说,任何陈述都不能是理解或生成表达式。在
没有语句可以出现在Python表达式中。
print
是python2中的一种语句,列表理解是一种表达式。不可能的。例如,也不能在索引表达式中放入global
语句。在注意,在python2中,可以将
将
print()
当作函数来处理(就像在python3中一样)。在相关问题 更多 >
编程相关推荐