删除标点符号,输出剩余文本-Python 3函数

时间:2019-04-16 13:49:25

标签: python python-3.x

我想通过函数运行此文件,然后在删除整数或数字后输出其余文本。下面是我的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)

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

  

soccerfif@yahoo.com 366-44-4444杰佐斯于1964年1月12日出生于杰弗里·普雷斯顿·乔根森,也是5岁和4岁”

我希望输出为:

  

soccerfif@yahoo.com 366-44-4444杰佐斯也于1964年1月12日出生于杰弗里·普雷斯顿·乔根森(Jeffrey Preston Jorgensen),

因此,基本上从文本文件中删除了所有整数。很简单。

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

1 个答案:

答案 0 :(得分:2)

如果您只想删除所有 个数字的部分,则甚至不需要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'