我正在寻找一个只包含不带撇号的单词的字典文件。我好像找不到一个!有谁知道我在哪里可以找到一个,如果不是我如何使用 Python 从文件中删除这些单词?
问问题
1154 次
3 回答
1
要检查任何字符是否在字符串或列表中,您可以通过以下方式使用“in”:
words = ["it's", "my", "world"]
filtered = [x for x in words if "'" not in x]
>>> ["my", "world"]
或者相同但没有第一个中使用的列表理解:
filtered = []
for x in words:
if "'" not in x:
filtered.append(x)
如果您有字典,其中键是您需要过滤的单词:
newDict = {}
for k,v in wordsDict.iteritems():
if "'" not in k:
newDict[k] = v
于 2012-11-17T16:58:27.567 回答
1
在 Linux 上:
一种很好的方法,grep
用于过滤掉words
文件中包含撇号的任何单词并保存到mywords.txt
您的主目录中。
grep "^[^']*$" /usr/share/dict/words > ~/mywords.txt
无需安装、下载或编写任何代码!
在 OS X 上:
甚至更容易,因为/usr/share/dict/words
已经不包含带有撇号的单词。
于 2012-11-17T16:58:48.897 回答
0
使用内置函数filter()
:
filter(lambda x:"'" not in x,my_list)
例子:
In [19]: my_list=['foo', "bar's", "don't","bar"]
In [20]: filter(lambda x:"'" not in x,my_list)
Out[20]: ['foo', 'bar']
从文档:
filter(function or None, sequence) -> list, tuple, or string
返回那些 function(item) 为真的序列项。如果 function 为 None,则返回为 true 的项目。如果序列是元组或字符串,则返回相同的类型,否则返回列表。
于 2012-11-17T16:59:00.427 回答