是否可以使用python检查字符串是否包含英语单词?

时间:2018-07-14 23:59:47

标签: python

因此,我正在尝试为我的项目之一提供自动化解决方案,并且我正在使用Python / Django,因为它是Web应用程序。我正在尝试在字符串列表中,尤其是在比特币地址中找到一个英文单词。该项目是关于虚荣地址,所以我试图找到一个比特币地址中是否有英文单词。我知道这听起来很疯狂,但我很想知道这是否可行。例如,

1GOOGLEzZDwTGhXJwPSapWtViWJf2NJYyt
1vsDRvApplemzFVj8ALj6mfBsbifRoD4mi
1NmD9HtNHYjtkncsT1bXW1j84jg9MV8VzD 
1mFAceBookzFVj8ALj6mfBsbifRoD4miY3
1mzFVj8ALj6mfBsbifRoYaHOOeD4miY36v
1NmzD3YLFsMpPQEsCVCjanAiN1trk3tURL 

因此,第一个地址包含Google,第二个包含Apple,第三个不包含任何内容,第四个包含Facebook,第五个包含Yahoo,第六个包含我不认为英文单词的URL,但像Google和Facebook一样,它是一个善良的词。因此,可以使用python检查一个比特币地址中的哪种单词?地址中可以包含零个或多个可能的单词,如果可能的话,我想知道哪个单词。

如果可能的话,谁能告诉我可以使用哪个库?我正在使用Python3和Django 2。

P.S。我不是专门在其中寻找Google,Facebook,Apple,yahoo!这只是一个例子。我想检查一个地址是否包含英文单词,这意味着它可以包含monkeydonkey或任何英文单词。

谢谢。

1 个答案:

答案 0 :(得分:4)

您需要列出要检测的所有英语单词的列表。有很多地方可以得到这些。我建议您查看字典文件中的拼写检查器(例如aspell),因为您并不关心定义。 Aspell has a command to dump wordlists

Uncaught ArgumentCountError: Too few arguments to function api::__construct(), 1 passed in /var/www/.../api_2.3.php on line 81 and exactly 2 expected in /var/www/.../api_2.3.php:28

接下来,获取一个单词的可迭代单词,并将单词列表格式化为带有交替形式的正则表达式,即aspell -d en dump master | aspell -l en expand > words.en.txt 。 (您可能需要先过滤特殊字符,具体取决于单词列表。)

由于Python的回溯正则表达式引擎无法有效处理替换,因此您需要一个更快的引擎。尝试使用Rust的正则表达式引擎的pip install rure,然后使用它来编译正则表达式。 (请参阅Rust的正则表达式optimization guide。)如果您关心它找到的 单词,则可以将正则表达式包装在'|'.join(wordlist)中,使其成为捕获组。

然后仅对每个地址依次运行已编译的正则表达式(可能不区分大小写)。如果匹配,您会明白的。