Python:如何在单词与符号和数字混合的字符串列表中创建唯一单词的字典
假设我有 列表=[“1我爱你/嘿”,“0因为你/你很可爱”,…] 我想创建一组独特的单词,避免使用数字和符号。 最好的方法是什么Python:如何在单词与符号和数字混合的字符串列表中创建唯一单词的字典,python,Python,假设我有 列表=[“1我爱你/嘿”,“0因为你/你很可爱”,…] 我想创建一组独特的单词,避免使用数字和符号。 最好的方法是什么 谢谢我不知道什么是“最好的”。这里有一条路 >>> sentence = 'Glücklicherweise kann der Mensch nur einen gewissen Grad des Unglücks fassen; was darüber hinausgeht, vernichtet ihn oder läßt ihn gleichg
谢谢我不知道什么是“最好的”。这里有一条路
>>> sentence = 'Glücklicherweise kann der Mensch nur einen gewissen Grad des Unglücks fassen; was darüber hinausgeht, vernichtet ihn oder läßt ihn gleichgültig.'
>>> import re
>>> sorted(set(re.sub(r'[^\w]', ' ', sentence).split()), key=str.lower)
['darüber', 'der', 'des', 'einen', 'fassen', 'gewissen', 'gleichgültig', 'Glücklicherweise', 'Grad', 'hinausgeht', 'ihn', 'kann', 'läßt', 'Mensch', 'nur', 'oder', 'Unglücks', 'vernichtet', 'was']
这应该是以下内容。我没有注意到第一条评论中提出的要点
>>> import re
>>> sentences = ['1. Glücklicherweise kann der Mensch nur einen gewissen Grad des Unglücks fassen; was darüber hinausgeht, vernichtet ihn oder läßt ihn gleichgültig.', '2. Unter allem Diebesgesindel sind die Narren die schlimmsten. Sie rauben euch beides, Zeit und Stimmung.']
>>> from functools import reduce
>>> sorted(set(re.sub(r'[0-9]', ' ', re.sub(r'[^\w]', ' ', reduce(lambda x, y: x+' '+y, sentences))).split()), key=str.lower)
['allem', 'beides', 'darüber', 'der', 'des', 'die', 'Diebesgesindel', 'einen', 'euch', 'fassen', 'gewissen', 'gleichgültig', 'Glücklicherweise', 'Grad', 'hinausgeht', 'ihn', 'kann', 'läßt', 'Mensch', 'Narren', 'nur', 'oder', 'rauben', 'schlimmsten', 'Sie', 'sind', 'Stimmung', 'und', 'Unglücks', 'Unter', 'vernichtet', 'was', 'Zeit']
假设您希望它不区分大小写,您可以执行以下操作:
lower_case_list = original_list.lower()
#convert from list of strings to one string
word_string = ' '.join(lower_case_list)
import string
letters = string.ascii_lowercase
#get a list of characters that aren't letters
not_letters = [char_ for char_ in word_string if not in letters]
#get rid of characters that aren't letters
for not_letter in not_letters:
word_string = word_string.replace(not_letter,"")
word_list = word_string.split(" ")
unique_word_set = set(word_list)
请注意,如果字符之间有空格,这会将字符拆分为不同的单词,例如“你好吗?”如果即使没有空格也要拆分,例如“你好,你好吗?”,则必须执行word_string.replace(而不是字母“”),然后去掉空字符串。到目前为止,您尝试了什么?在我们评论“最佳”方式之前,我们应该看到您在寻找某种方式时遇到了攻击。这种攻击采用单个字符串作为输入,而不是字符串列表,并以数字形式保留。@accumulation:您当然是对的。我想我现在提供的是正确的。不客气。我不允许写你帮我的。所以我不会。更正一行:
not_letters=[char_uufor char_uu]in word_ustring如果char_unot in letters and char_uu!=“char”
-否则空格会添加到not_letters,所有单词都会粘在一起。