Python readline с пользовательским разделителем



Новичок здесь.
Я пытаюсь читать строки из файла, однако одна строка в файле .txt имеет n где-то посередине и при попытке прочитать эту строку .readline python разрезает его посередине и выводит в виде двух строк.




  • Когда я копирую и перевожу строку в это окно, она отображается в виде двух строк. Поэтому я загрузил файл сюда: https://ufile.io/npt3n



  • Также добавлен скриншот файла, как он показан в txt-файле.


  • это экспортируется ли история группового чата из Whatsup..если вам интересно.

  • пожалуйста, помогите мне прочитать одну строку полностью, как показано в файле txt.


.



f= open("f.txt",mode='r',encoding='utf8')

for i in range(4):
lineText=f.readline()
print(lineText)

f.close()


Введите описание изображения здесь

519   2  

2 ответов:

Python 3 позволяет определить, что такое новая строка для конкретного файла. Он редко используется, потому что режим универсальных новых строк по умолчанию очень терпим:

При чтении входных данных из потока, если newline отсутствует, включается универсальный режим newlines. Строк во входных данных могут закончиться '\п', '\р', или '\р\н', и они преобразуются в '\п', прежде чем возвращается к вызывающей стороне.

Итак, здесь вы должны сделать явным, что только '\r\n' является концом строка:

f= open("f.txt",mode='r',encoding='utf8', newline='\r\n')

# use enumerate to show that second line is read as a whole
for i, line in enumerate(fd):   
    print(i, line)

Вместо использования функции readline можно читать все содержимое и разбивать строки регулярным выражением:

import re

with open("txt", "r") as f:
    content = f.read()
    # remove end line characters
    content = content.replace("\n", "")
    # split by lines
    lines = re.compile("(\[[0-9//, :\]]+)").split(content)
    # clean "" elements
    lines = [x for x in lines if x != ""]
# join by pairs
lines = [i + j for i, j in zip(lines[::2], lines[1::2])]

Если все содержание имеет одно и то же начало [...] вы можете разделить это, а затем очистить все части, опуская элементы"". Затем вы можете соединить каждую часть с помощью функции zip (https://stackoverflow.com/a/5851033/1038301 )

Comments

    Ничего не найдено.