【问题标题】:Is it possible to check if string contains English word using python?是否可以使用python检查字符串是否包含英文单词?
【发布时间】:2020-01-17 14:16:57
【问题描述】:

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

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

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

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

附:我不是专门找谷歌、脸书、苹果、雅虎在里面!这只是一个例子。我想检查一个地址是否包含英文单词,这意味着它可以有monkeydonkey 或任何英文单词。

谢谢。

【问题讨论】:

  • 您是要在一堆地址中查找特定单词,还是要检测特定地址是否包含任何英文单词?
  • 首先不是一个特定的地址,所以在我可以扫描的每个地址中,我想扫描它是否有任何英文单词。地址中有零个或多个英文单词。
  • @gilch 我知道这听起来很疯狂,并且需要大量的处理能力,但这是第二件要担心的事情,因为现在我正在寻找一个答案是否可能,如果它不是我怎么能那样做!
  • 您是在问它是否可能(当然,它是)或者是否可能在合理的时间内
  • 你好@BryanOakley,当我问可能时,我的意思是我想从比特币地址中找到可能的英文单词。就像那些拼图,你在一个正方形中看到一堆字母,你首先看到的任何词都反映了你的个性或你想要的生活等。所以对于比特币地址,你可能会看到一个词,我可能会看到不同的词和其他一些这个人可能会同时看到我们的两个词,并且可能是一两个不同的词。

标签: python


【解决方案1】:

您需要一份您想检测的所有英语单词的列表。有很多地方可以获得这些。我建议查看拼写检查器的字典文件,例如 aspell,因为您不关心定义。阿斯佩尔has a command to dump wordlists.

aspell -d en dump master | aspell -l en expand > words.en.txt

接下来,获取单词的可迭代对象。您可能想要过滤掉诸如aI 之类的琐碎短词,以及任何不能出现在地址中的带有特殊字符的词。将单词列表格式化为带有交替的正则表达式,即'|'.join(wordlist)

由于 Python 的回溯正则表达式引擎不能有效地处理交替,因此您需要一个更快的引擎。尝试pip install rure,它使用 Rust 的正则表达式引擎,并使用它来编译正则表达式。 (请参阅 Rust 的正则表达式 optimization guide。)如果您关心它找到了 哪个 词,您可以将整个正则表达式包装在 () 中,使其成为一个捕获组。

然后依次对每个地址运行已编译的正则表达式(可能不区分大小写)。如果它匹配,你会得到这个词。

【讨论】:

  • 感谢@gilch 的详细解答。我会仔细看看的。 :D
猜你喜欢
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
相关资源
最近更新 更多