gpt4 book ai didi

python - Unicodedata.normalize : TypeError: normalize() argument 2 must be str, 未列出

转载 作者:行者123 更新时间:2023-12-01 00:18:06 26 4
gpt4 key购买 nike

我正在尝试在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com