Python разделить на \ t 'одураченный' текст с помощью) - PullRequest
0 голосов
/ 09 мая 2019

У меня есть некоторый код на python, который загружает отчет amazon, создает объект байта и анализирует его по отдельным строкам в поисках \ n.В основном это работает хорошо, но блок текста, кажется, обманывает разделение строки.Это вводит в заблуждение текст в (120 мл)

Код

report = report_api.get_report(report_id=ReportID)
report_as_dict = report.parsed  # bytes object
pp.pprint(report_as_dict)
line_split=report_as_dict.split(b'\n')

for line in line_split[1:]:
   pp.pprint(line)

Образец из 'report_as_dict'

b'elete\tpending-quantity\tfulfillment-channel\tmerchant-shipping-group\nMenic'
b'on Unique ab Multi-Purpose Solution + abc Case, ONE 8 fl oz (120ml) bot'
b'tle\t\t012312VTS55\t0P-avac2A-38\t19.99\t\t2019-03-19 13:43:38 PDT\t\ty\t'

b'1\t\t\t11\t\t\t\tB00E3GXZJA\t\t\t\t\t\tB00E3GXZJA\t\t\t\tAMAZON_NA\tMigrat'
b'ed Template\nRed Barn Naturals Cat Treats,  6 pack\t\t0'

Образец разделения - Это в основном расщепляетсяправильно на \ n, но имеет один дополнительный разделитель вокруг текста, который был (120 мл).') bottle' должен быть частью строки выше

[b'Menion on Unique ab Multi-Purpose Solution + abc Case, ONE 8 fl oz (120ml'
b') bottle',
b'',
b'012312VTS55',
b'0P-avac2A-38',

1 Ответ

2 голосов
/ 09 мая 2019

Там нет никакого дополнительного раскола.Это просто pprint делает что-то непонятное.

Видите, как нет запятой между ...(120ml' и b') bottle'?В исходном коде Python два литерала байтовой строки без других токенов между ними неявно объединяются в одну байтовую строку.(Это также происходит с обычными строками Unicode.) Попробуйте сами:

>>> b'a' b'b'
b'ab'

pprint решил, что первая строка байтов в выводе split слишком длинна для печати в одной строке, поэтомуразбивает его на две неявно связанные цепочки байтов.split не дал дополнительного разделения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...