0

我正在寻找一个只包含不带撇号的单词的字典文件。我好像找不到一个!有谁知道我在哪里可以找到一个,如果不是我如何使用 Python 从文件中删除这些单词?

4

3 回答 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 回答