gpt4 book ai didi

python - 从我的嵌套和标记化列表中删除标点符号

转载 作者:行者123 更新时间:2023-11-30 22:05:12 26 4
gpt4 key购买 nike

我正在尝试从嵌套和标记化列表中删除标点符号。我尝试了几种不同的方法来解决这个问题,但没有成功。我最近的尝试如下所示:

def tokenizeNestedList(listToTokenize):
flat_list = [item.lower() for sublist in paragraphs_no_guten for item in sublist]
tokenList = []
for sentence in flat_list:
sentence.translate(str.maketrans(",",string.punctuation))
tokenList.append(nltk.word_tokenize(sentence))
return tokenList

正如您所看到的,我在标记列表时尝试删除标点符号,在调用我的函数时任何人都会遍历该列表。但是,当尝试这种方法时,我收到错误

ValueError: the first two maketrans arguments must have equal length

我有点明白为什么会发生。运行我的代码而不尝试删除标点符号并打印前 10 个元素给我(这样你就知道我正在做什么):

[[], ['title', ':', 'an', 'inquiry', 'into', 'the', 'nature', 'and', 'causes', 'of', 'the', 'wealth', 'of', 'nations'], ['author', ':', 'adam', 'smith'], ['posting', 'date', ':', 'february', '28', ',', '2009', '[', 'ebook', '#', '3300', ']'], ['release', 'date', ':', 'april', ',', '2002'], ['[', 'last', 'updated', ':', 'june', '5', ',', '2011', ']'], ['language', ':', 'english'], [], [], ['produced', 'by', 'colin', 'muir']]

任何和所有的建议表示赞赏。

最佳答案

假设每个标点符号都是一个单独的标记,您可以这样:

import string

sentences = [[], ['title', ':', 'an', 'inquiry', 'into', 'the', 'nature', 'and', 'causes', 'of', 'the', 'wealth', 'of',
'nations'], ['author', ':', 'adam', 'smith'],
['posting', 'date', ':', 'february', '28', ',', '2009', '[', 'ebook', '#', '3300', ']'],
['release', 'date', ':', 'april', ',', '2002'], ['[', 'last', 'updated', ':', 'june', '5', ',', '2011', ']'],
['language', ':', 'english'], [], [], ['produced', 'by', 'colin', 'muir']]


result = [list(filter(lambda x: x not in string.punctuation, sentence)) for sentence in sentences]

print(result)

输出

[[], ['title', 'an', 'inquiry', 'into', 'the', 'nature', 'and', 'causes', 'of', 'the', 'wealth', 'of', 'nations'], ['author', 'adam', 'smith'], ['posting', 'date', 'february', '28', '2009', 'ebook', '3300'], ['release', 'date', 'april', '2002'], ['last', 'updated', 'june', '5', '2011'], ['language', 'english'], [], [], ['produced', 'by', 'colin', 'muir']]

这个想法是使用filter ,删除那些标点符号,因为过滤器返回一个迭代器,使用列表将其转换回列表。您还可以使用等效的列表理解:

result = [[token for token in sentence if token not in string.punctuation] for sentence in sentences]

关于python - 从我的嵌套和标记化列表中删除标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53081795/

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