【发布时间】:2020-12-02 09:59:28
【问题描述】:
给定一个句子“嗨,我住在第 4 个十字路口,我的 ssn 号码是 56tyuh”。我想删除诸如字母数字( 4th 和 56tyuh )之类的词。 isalpha() 是否仅用于检查句子中是否有字母数字?如果不是,我该如何使用它来删除字母数字
【问题讨论】:
标签: python-3.x text nlp
给定一个句子“嗨,我住在第 4 个十字路口,我的 ssn 号码是 56tyuh”。我想删除诸如字母数字( 4th 和 56tyuh )之类的词。 isalpha() 是否仅用于检查句子中是否有字母数字?如果不是,我该如何使用它来删除字母数字
【问题讨论】:
标签: python-3.x text nlp
您需要为此使用正则表达式。正则表达式可能会令人困惑,但在这种情况下,它非常简单。
import re
s = 'hi I stay at 4th cross street and my ssn number is 56tyuh'
r = r'\S*\d+\S*'
cut_string = re.sub(r, '', s)
让我们分解一下:
r 是一个正则表达式变量,它检测由 0-n 个前导非空白字符、后跟 1-n 个数字字符和 0-n 个尾随非空白字符组成的字符序列。
re.sub 用第二个参数替换我们正则表达式的匹配项,在我们的例子中是一个空字符串。因此它会从字符串中删除我们正则表达式的所有匹配项。
编辑:
这也会删除数字。如果您只想删除字母数字单词,请进行以下更改:
r = r'([a-zA-Z]*\d+[a-zA-Z]+|[a-zA-Z]+\d+[a-zA-Z]*)'
注意变量中心的|。这意味着 either 匹配括号内的第一部分或第二部分。第一个匹配 4th 但不匹配 ep95,第二个则相反。
【讨论】: