Удалить все числа из .txt-файла с помощью функции def-Python 3

#python #python-3.x

#python #python-3.x

Вопрос:

Ввод: я хочу взять файл .txt, содержащий содержимое (см. Пример содержимого, которое будет в файле .txt ниже)

soccerfif@yahoo.com 366-44-4444 Jezos was born Jeffrey Preston Jorgensen on January 12, 1964, also 5 and 4

Процесс: я хочу запустить его через мою функцию Def (replace_numbers)

Вывод: я хочу, чтобы файл, который был запущен через функцию, был добавлен для удаления всех чисел (см. Пример ниже)

soccerfif@yahoo.com 366-44-4444 Jezos was born Jeffrey Preston Jorgensen on January 12, 1964, also and

Вот мой код:

 import re
theFile=open("/home/file/wow.txt",'rt', encoding= 'latin-1').read()
words=theFile.split()
def replace_numbers(words):
    new_words=[]
    for word in words:
        pattern= re.compile(" d ")
        if pattern.match(1):
            new_word= re.sub(pattern, " ", word)
            new_words.append(new_word)
    return new_words

r=replace_numbers(words)
print(r)
  

Запустил я запустил этот код, я получил сообщение об ошибке: ожидаемая строка или байтоподобный объект

Любые предложения о том, как использовать функцию def, чтобы сделать это с файлом.?

Комментарии:

1. Можете ли вы опубликовать точное сообщение об обратном отслеживании?

2. Где сообщение об ошибке указывало на проблему? И в вашем образце ожидаемого результата вообще ничего не добавлено.

3. Даже 12 и 1964 являются числами. Я видел, что вы не удалили их в своем ожидаемом выводе?

Ответ №1:

Вот как я бы поступил :

 theFile = open ("wow.txt",'rt', encoding= 'latin-1').read()
words = theFile.split()

def replace_numbers (words) :
    exclude_list = [str (x) for x in range (10)]
    new_words = []
    for word in words :
        if word not in exclude_list :
            new_words.append (word)
    return new_words

r = replace_numbers (words)
print (r)
  

Комментарии:

1. exclude_list = list('0123456789') было бы намного более читабельным. И благодаря быстрому тестированию это в 1000 раз быстрее.