我很难尝试对python列表进行编码,我已经使用文本文件对其进行了计数,以便使用re模块计算其中的特定单词。
这是代码:
# encoding text file
with codecs.open('projectsinline.txt', 'r', encoding="utf-8") as f:
for line in f:
# Using re module to extract specific words
unicode_pattern = re.compile(r'\b\w{4,20}\b', re.UNICODE)
result = unicode_pattern.findall(line)
word_counts = Counter(result) # It creates a dictionary key and wordCount
Allwords = []
for clave in word_counts:
if word_counts[clave] >= 10: # We look for the most repeated words
word = clave
Allwords.append(word)
print Allwords
部分输出如下:
[...u'recursos', u'Partidos', u'Constituci\xf3n', u'veh\xedculos', u'investigaci\xf3n', u'Pol\xedticos']
如果我print
变量word
输出看起来应该是这样的。但是,当我使用append
时,所有单词都会再次中断,如前面的示例所示。
我使用这个例子:
[x.encode("utf-8") for x in Allwords]
输出与以前完全相同。
我也使用这个例子:
Allwords.append(str(word.encode("utf-8")))
输出更改,但单词看起来不应该如此:
[...'recursos', 'Partidos', 'Constituci\xc3\xb3n', 'veh\xc3\xadculos', 'investigaci\xc3\xb3n', 'Pol\xc3\xadticos']
一些答案给出了这个例子:
print('[' + ', '.join(Allwords) + ']')
输出如下:
[...recursos, Partidos, Constitución, vehÃculos, investigación, PolÃticos]
说实话,我不想打印列表,只是编码,以便识别所有项目(单词)。
我正在寻找类似的东西:
[...'recursos', 'Partidos', 'Constitución', 'vehículos', 'investigación', 'Políticos']
赞赏任何解决问题的建议
谢谢,
答案 0 :(得分:0)
你可能会尝试什么
打印(' [' +',' .join(Allwords)+']')
答案 1 :(得分:0)
您的Unicode字符串列表是正确的。当您打印列表时,列表中的项目显示为repr()
功能。当您自己打印项目时,项目显示为str()
功能。它只是一个显示选项,类似于将整数打印为十进制或十六进制。
如果你想正确看到它们,请打印单个单词,但是为了比较,内容是正确的。
值得注意的是,Python 3改变了repr()
的行为,如果终端直接支持它们,并且ascii()
函数再现Python 2 {{1},现在将显示没有转义码的非ASCII字符行为。