#python-3.x #list #python-requests
#python-3.x #Список #python-запросы
Вопрос:
пример ввода
при разборе текстового файла .txt = ["'blah.txt'", "'blah1.txt'", "'blah2.txt'" ]
ожидаемый результат в другом текстовом файле out_path.txt
blah.txt
blah1.txt
blah2.txt
Код, который я пробовал, это просто добавляет «[]» к входному файлу. Хотя я также пробовал использовать perl one liner, заменяющий двойные и одинарные кавычки.
read_out_fh = open('out_path.txt',"r")
for line in read_out_fh:
for word in line.split():
curr_line = re.findall(r'"([^"]*)"', 'n')
print(curr_line)
Комментарии:
1. форматируйте свой вопрос с фактическим результатом и ожидаемым результатом
Ответ №1:
это происходит потому, что при чтении файла он будет восприниматься как строка, а не как список, даже если вы сохранили форматирование списка. вот почему вы получаете [] при выполнении re. for line in read_in_fh:
здесь вы берете каждую букву в строке, поэтому вы не получаете желаемый результат. итак, сначала я кое-что написал, чтобы преобразовать строку в список. при этом я также исключил ""
и ''
, как вы указали. затем записал это в новый файл example.txt
.
Примечание: измените имя файла в соответствии с вашими файлами
read_out_fh = open('file.txt',"r")
for line in read_out_fh:
line=line.strip("[]").replace('"','').replace("'",'').split(", ")
with open("example.txt", "w") as output:
for word in line:
#print(word)
output.write(word 'n')
example.txt (выходной файл)
blah.txt
blah1.txt
blah2.txt
Ответ №2:
Приведенный ниже код подходит для вашего примера, который вы привели в вопросе:
# Content of textfile.txt:
asdasdasd=["'blah.txt'", "'blah1.txt'", "'blah2.txt'"]asdasdasd
# Code:
import re
read_in_fh = open('textfile.txt',"r")
write_out_fh = open('out_path.txt', "w")
for line in read_in_fh:
find_list = re.findall(r'[(".*?"*)]', line)
for element in find_list[0].split(","):
element_formatted = element.replace('"','').replace("'","").strip()
write_out_fh.write(element_formatted "n")
write_out_fh.close()