извлекать слова из текстового файла и печатать строку netxt

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