Как разбить этот многострочный разделитель, не создавая два списка и добавляя, которые, похоже, очень эффективны при выполнении операций.Разделительная строка с разделителем 1 и индексом [0] с другими
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[156]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV']
Простой re.split(r'[.|]')
не работает из-за во второй части строки.
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|D|F.g|.Y|'
re.split(r'[./|]', string)
Out[179]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'D', 'F', 'g', '', 'Y', '']
данные NOPQ
и RSTUV
могут содержать .
, но это не разделитель. Номер для столбцов, разделенных колонками, может увеличиваться. Но, всегда до первого |
, разделитель .
является seperater после первого |
только |
является разделителем.
Немногие другие возможные комбинации, которые могут быть данные,
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|DFGR'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[174]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'DFGR']
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|D.F.GR.'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[176]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'D.F.GR.']
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|D|F.g|.Y|'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[178]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'D', 'F.g', '.Y', '']
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|D|F.g|Y|H|J|K|R|Y'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[181]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'D', 'F.g',
'Y', 'H', 'J', 'K', 'R', 'Y']
Try [это демо] (http://ideone.com/WT7mOx) - неважно, если реверсирование строки и использование обычного 're' модуля ускоряет работу, но является другой альтернативой модулю' regex'. –
@stribizhev спасибо Я пробовал, что даже это идет медленно. Я фактически разбираю журнал с 20 М записей в день. И это всего лишь данные о игрушке, на самом деле есть от 35 до 62 колонок. – PKM15
Я вижу.Очень жаль, что Python 're' не поддерживает' \ G'. –