Чтение многострочного файла с разделителем «

#python #string #input

#python #строка #ввод

Вопрос:

У меня есть файл, который содержит следующее содержимое:

 This is the first line.
amp;
This is the second line
but without separator.
amp;
This is the third line.
...
 

Каждая строка заканчивается символом n . Я хочу преобразовать входные данные этого файла в следующий список:
['This is the first line.', 'This is the second line but without separator.', 'This is the third line.', ...]

Мой фактический код выглядит так:

 file = open("/path/to/file", "r")
list = [line.rstrip() for line in file if not line.rstrip() is "amp;"]
 

Проблема в том, что многострочный раздел разделяется в списке, но я хочу, чтобы он был объединен с или без n него.

Я надеюсь, что кто-нибудь может дать мне подсказку. Спасибо!

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

1. Что вы ожидаете сделать if not line.rstrip() is "*" ? Как вы думаете, почему он удалит строки, которые являются "amp;" и соединяют строки, не разделенные единицей?

2. [i.replace("n","") for i in line.split("amp;")]

Ответ №1:

просто разделите весь файл на amp; и удалите пробелы (предполагая, что они должны быть просто разделены amp; )

 l = [s.strip().replace('n', ' ') for s in file.read().split('amp;')]
 

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

1. Спасибо, это хорошее решение моей проблемы. Я только что добавил a n , .split('amp;n) поэтому a amp; может быть в предложении.

2. Или просто замените перед разделением на amp; . l = file.read().replace('n', ' ').split('amp;') устраняет необходимость в какой-либо итерации.

Ответ №2:

Вот рабочий пример. Вы уже знаете, как читать файл, вот как вы можете проанализировать содержимое.

 file_contents = """This is the first line.
amp;
This is the second line
but without separator.
amp;
This is the third line."""

all_lines = []
for l in file_contents.split('amp;'):
    all_lines.append(" ".join(l.split('n')).rstrip())

print(all_lines)
 

С принтами:

 ['This is the first line.', ' This is the second line but without separator.', ' This is the third line.']
 

Ответ №3:

Как насчет того, чтобы прочитать все строки и объединить их в одну строку, а затем использовать String.split(«amp;»)

 with open("test.txt") as file:
    lines = file.read()

print(lines.split("amp;"))
# to remove the n
print(lines.replace("n", "").split("amp;"))
 

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

1. Также замените все n на один пробел из lines .

2. Приведенный выше ответ, похоже, решает проблему. Я также обновлю код здесь.