Файловая операция с использованием numpy

#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')