#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)
поэтому aamp;
может быть в предложении.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. Приведенный выше ответ, похоже, решает проблему. Я также обновлю код здесь.