открыть несколько текстовых файлов и читать до определенного символа - PullRequest
0 голосов
/ 30 мая 2019

Я хотел бы прочитать несколько текстовых файлов, но они слишком длинные, поэтому я хочу прекратить читать их при первом '}'.

РЕДАКТИРОВАТЬ: приведенный ниже код работает без ошибок, но не удается обрезать текстовый файл, когда он встречает '}' в первый раз. Я хотел бы прекратить чтение в конце второй строки образца (где есть '}')

РЕДАКТИРОВАТЬ 2: я добавил readline заявление в коде.

SAMPLE:

{"offset":"14758816658","bids":[["968899.79379","0.01000000","0.01000000","0","1093577338","29194","5","14758816598","1"],["968899.35295","0.02100000","0.02100000","0","1093577193","29194","5","14758816186","1"],
...["9999999.00000","0.01000000","0.01000000","0","568775590","75620","5","12301971393","1"]]}
{"offset":"14758825743","bids":[["968019.05000","0.09815250","0.09815250","0","1093580802","243454","5","14758825261","1"],["968019.00000","0.18740000","0.18740000","0","1093580826","221763","5","14758825331","1"],

КОД:

        with open(fileName, 'r') as fileName:
            line = fileName.readline()
                for x in line:
                    if x == '}':
                        break
            data = pd.read_csv(fileName, lineterminator= str(']'), low_memory= False, error_bad_lines=False, header= None)
            print(data)

РЕДАКТИРОВАТЬ: я запускаю код, как показано ниже. Правильный вывод для print, но все еще весь набор данных, когда я pd.read.csv

with open(fileName, 'r', encoding='utf-8') as fileName:
      print(re.findall(r'(\{[^\{\}]*})', fileName.readline())[0])
      data = pd.read_csv(fileName, lineterminator= str(']'), low_memory= False, error_bad_lines=False, header= None)

РЕДАКТИРОВАТЬ 2: РЕШЕНИЕ

 with open(fileName, 'r', encoding='utf-8') as fileName:
            d = io.StringIO(re.findall(r'(\{[^\{\}]*})', fileName.readline())[0])
            data = pd.read_csv(d, lineterminator= str(']'), low_memory= False, error_bad_lines=False, header= None)

1 Ответ

0 голосов
/ 30 мая 2019

Используйте регулярное выражение и получите значение. Ниже приведен фрагмент кода {.*} из файла.

import re
with open('string.txt') as s:
    print(re.findall(r'(\{[^\{\}]*})', s.read())[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...