#python-3.x #numpy
#python-3.x #тупой
Вопрос:
Я пытаюсь удалить фразу из текстового файла с помощью numpy.Я пробовал num = [] и num1.добавить (num1) ‘a’ вместо ‘w’, чтобы записать файл обратно. В то время как append не удаляет фразу writes’ первый запуск удаляет фразу, второй запуск удаляет вторую строку, которая не является фразой, третий запуск очищает файл
import numpy as np
phrase = 'the dog barked'
num = 0
with open("yourfile.txt") as myFile:
for num1, line in enumerate(myFile, 1):
if phrase in line:
num = num1
else:
break
a=np.genfromtxt("yourfile.txt",dtype=None, delimiter="n", encoding=None )
with open('yourfile.txt','w') as f:
for el in np.delete(a,(num),axis=0):
f.write(str(el) 'n')
'''
the bird flew
the dog barked
the cat meowed
'''
Комментарии:
1. Итак, вы хотите удалить любую строку в файле, содержащую
phrase
строку, верно? вместо того, чтобы просто удалятьphrase
строку2. Ваш первый цикл проверяет строки только до тех пор, пока одна из них не будет содержать вашу
phrase
. Если строка, на которую он смотрит, не содержит строки, онаbreak
выходит из цикла. Вероятно, вам нужно избавиться отelse: break
блока в дополнение к исправлению любой вашей проблемы с numpy. Я не уверен, что понимаю, что он пытается сделать, поэтому я не могу дать ответ об этой части.3. Почему вы используете
numpy
?
Ответ №1:
Я думаю, вы все еще можете использовать nums.append(num1)
with w
mode, проблема, с которой, я думаю, вы столкнулись, заключается в том, что вы использовали enumerate
функцию для myFile
строк, используя 1-index вместо 0-index, как ожидалось в массиве numpy. Изменение его с enumerate(myFile, 1)
на enumerate(myFile, 0)
, похоже, устраняет проблему
import numpy as np
phrase = 'the dog barked'
nums = []
with open("yourfile.txt") as myFile:
for num1, line in enumerate(myFile, 0):
if phrase in line:
nums.append(num1)
a=np.genfromtxt("yourfile.txt",dtype=None, delimiter="n", encoding=None )
with open('yourfile.txt','w') as f:
for el in np.delete(a,nums,axis=0):
f.write(str(el) 'n')