Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何在单词与符号和数字混合的字符串列表中创建唯一单词的字典_Python - Fatal编程技术网

Python:如何在单词与符号和数字混合的字符串列表中创建唯一单词的字典

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

假设我有 列表=[“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ü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,所有单词都会粘在一起。