Разделение текстового файла в Python - проблема с разделителями - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь разделить файл делимером: "}., но разделитель не найден, и в результате я получаю только один новый файл с тем же содержимым, что и исходный. Код:

with  open('okladki_200_01') as fp:
    contents = fp.read()

    i = 1
    for entry in contents.split('"}.'):

        f= open("okladka_%s" % i,"w+")
        f.write(entry)
        f.close()
        i += 1

Можете ли вы помочь, пожалуйста?

EDIT: Содержимое файла выглядит так:

{"base64Image":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAusFMADASIA\nAhEBAxEB/8QAHwAAAgIBBQEBAAAAAAAAAAAAAgQAAwUBBgcICQoL/8QAaRAAAQEFBAcDBwgHBQYD\nAwEZAwIBBBESEwAhIiMFFDEyM0FDUVNhBiRCY3GBkQcIFTRSc6GxRGKDk8HR8FRyo+HxCRYlZLPD\ndILTFzWEkp [...] 3aIiVoL1pmNQxjWr27\nPBnhatT94NfdwDzDBz9aSP/Z\n","elementHashcode":-1794239528,"imageOrientation":6,"type":"BOOK"}
{"base64Image":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB

И я думаю, что только что обнаружил проблему ... Программа просмотра HxD отображает 0x0A символ ASCII в виде точки, но это Новая строка. Так что я должен искать '"}\n'

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Вам действительно нужно проверить скобки?В вашем случае кажется, что ваш входной файл уже отформатирован с 1 строкой содержимого = 1, поэтому вместо этого наш разделитель может быть \n, и мы можем использовать readlines().

Вот возможное решение:

with  open('okladki_200_01') as fp:
    lines = fp.readlines() # this is a list of strings.

    i = 1
    for line in lines:
        entry = line.lstrip("{").rstrip("}\n") # some clean-up.
        f = open("okladka_%s" %i ,"w+")
        f.write(entry)
        f.close()
        i += 1
0 голосов
/ 10 июня 2019

Переместить содержимое.split ('"}.') В собственную переменную.

lines = contents.split('.}"')

for entry in lines: 
    ...

код:

with  open('textfile') as fp:
    contents = fp.read()

i = 1

lines = contents.split('.}"')

for entry in lines: 
    f= open("textfile_%s" % i,"w+")
    f.write(entry)
    f.close()
    i += 1

fp.close()
...