我正在尝试在 python 中加载文件。如果您运行下面的代码并加载仅包含英文单词的文件,它将加载得很好。
Listado.txt 是一个西类牙语文件,包含以下单词:abacá、abadí、abadía、abajeño、abaniquería
西类牙语包含重音字母(例如 é)或特殊字符(变音符号),这就是问题所在,当我尝试将此文件加载到 Python 中时,它会提示。我希望能够标准化列表,或删除重音字符并加载列表。
我尝试使用标准化:
unicodedata.normalize('NFD', line).encode('ascii', 'ignore')
我收到以下错误:
类型错误:normalize()参数2必须是str,而不是列表
到目前为止的代码:
import random
import string
import unicodedata
#WORDLIST_FILENAME = "words_alpha.txt"
WORDLIST_FILENAME = "listado.txt"
def loadWords():
print("Loading word list from file...")
# inFile: file
inFile = open(WORDLIST_FILENAME, 'r')
wordlist =[]
for line in inFile:
line = line.split()
wordlist.extend(line)
# unicodedata.normalize('NFD', line).encode('ascii', 'ignore')
print(" "), len(wordlist), ("words loaded.")
return wordlist
最佳答案
正如错误所示,您正在尝试 normalize line
,它是一个列表,就像您之前所做的 line = line.split()
一样。只需在将行拆分为单词之前对其进行标准化,如下所示:
for line in inFile:
unicodedata.normalize('NFD', line).encode('ascii', 'ignore')
line = line.split()
wordlist.extend(line)
print(" "), len(wordlist), ("words loaded.")
或者,如果您想在规范化之前扩展单词列表,您可以使用列表理解执行以下操作来单独规范化每个单词。
for line in inFile:
line = line.split()
wordlist.extend(line)
line = [unicodedata.normalize('NFD', x).encode('ascii', 'ignore') for x in line]
print(" "), len(wordlist), ("words loaded.")
关于python - Unicodedata.normalize : TypeError: normalize() argument 2 must be str, 未列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59160978/