Подтвердить что ты не робот

Разбиение строки на основе закладки в файле

У меня есть файл, содержащий значения, разделенные вкладкой ( "\ t" ). Я пытаюсь создать список и сохранить все значения файла в списке. Но у меня проблемы. Вот мой код.

line = "abc def ghi"
values = line.split("\t")

Он отлично работает, пока между каждым значением есть только одна вкладка. Но если есть одна вкладка, она копирует таблицу и в значения. В моем случае главным образом дополнительная вкладка будет после последнего значения в файле. Кто-нибудь может мне помочь.

4b9b3361

Ответ 1

Вы можете использовать regex здесь:

>>> import re
>>> strs = "foo\tbar\t\tspam"
>>> re.split(r'\t+', strs)
['foo', 'bar', 'spam']

обновление:

Вы можете использовать str.rstrip, чтобы избавиться от trailing '\t', а затем применить regex.

>>> yas = "yas\t\tbs\tcda\t\t"
>>> re.split(r'\t+', yas.rstrip('\t'))
['yas', 'bs', 'cda']

Ответ 2

Вы можете использовать regexp для этого:

import re
patt = re.compile("[^\t]+")


s = "a\t\tbcde\t\tef"
patt.findall(s)
['a', 'bcde', 'ef']  

Ответ 3

Другое решение на основе regex:

>>> strs = "foo\tbar\t\tspam"

>>> r = re.compile(r'([^\t]*)\t*')
>>> r.findall(strs)[:-1]
['foo', 'bar', 'spam']

Ответ 4

Разделите вкладку, но затем удалите все пробелы.

text = "hi\tthere\t\t\tmy main man"
print [splits for splits in text.split("\t") if splits is not ""]

Выходы:

['hi', 'there', 'my main man']

Ответ 5

Python поддерживает файлы CSV в одноименном csv модуле. Это относительно неверно, поскольку он поддерживает гораздо больше, чем только значения, разделенные запятыми.

Если вам нужно выйти за рамки основного расщепления слов, вы должны взглянуть. Скажем, например, потому что вам нужно иметь дело с цитируемыми значениями...