【问题标题】:Is there a function to remove alphanumeric words given a sentence using python是否有使用python删除给定句子的字母数字单词的功能
【发布时间】:2020-12-02 09:59:28
【问题描述】:

给定一个句子“嗨,我住在第 4 个十字路口,我的 ssn 号码是 56tyuh”。我想删除诸如字母数字( 4th 和 56tyuh )之类的词。 isalpha() 是否仅用于检查句子中是否有字母数字?如果不是,我该如何使用它来删除字母数字

【问题讨论】:

    标签: python-3.x text nlp


    【解决方案1】:

    您需要为此使用正则表达式。正则表达式可能会令人困惑,但在这种情况下,它非常简单。

    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,第二个则相反。

    【讨论】:

    • 欣赏解释。知道为什么数字也会与字母数字一起被删除吗?
    • 我以为你也想删除数字。请查看我的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多