首页 > 解决方案 > 删除标点符号,输出剩余文本-Python 3 函数

问题描述

我想通过我的函数运行这个文件,然后在删除整数或数字后输出剩余的文本。下面是我的python代码:

theFile=open("home/filepath/file",'rt', encoding= 'latin-1').read()
words= the_file.split()

def replace_numbers(words):
    new_words=[]
    for word in words:
        new_word= re.sub(" \d+", " ", word)
        if new_word !='':
            new_words.append(new_word)
    return new_words

replace_numbers(words)

以下是文件中的一些示例文本:

footballfif@yahoo.com 366-44-4444 Jezos 于 1964 年 1 月 12 日出生于 Jeffrey Preston Jorgensen,同时 5 岁和 4 岁

我希望输出为:

Footballfif@yahoo.com 366-44-4444 Jezos 于 1964 年 1 月 12 日出生于 Jeffrey Preston Jorgensen,同时也是

所以基本上从文本文件中删除所有整数。简单的。

有没有办法返回删除文件中所有数字然后输出剩下的结果的方法。截至目前,输出只是[]。我知道问题可能出在 if new_word != '': 部分,但我似乎找不到问题。

标签: pythonpython-3.x

解决方案


如果您只想删除所有数字的部分,您甚至不需要re. 只是split然后保持一切not isdigit

>>> text = "soccerfif@yahoo.com 366-44-4444 Jezos was born Jeffrey Preston Jorgensen on January 12, 1964, also 5 and 4"
>>> [word for word in text.split() if not word.isdigit()]
['soccerfif@yahoo.com', '366-44-4444', 'Jezos', 'was', 'born', 'Jeffrey', 'Preston', 'Jorgensen', 'on', 'January', '12,', '1964,', 'also', 'and']
>>> ' '.join(_)
'soccerfif@yahoo.com 366-44-4444 Jezos was born Jeffrey Preston Jorgensen on January 12, 1964, also and'

推荐阅读