Удаление пустых элементов из списка (Python) - PullRequest
2 голосов
/ 17 февраля 2010

Я читаю файл в Python, который недостаточно хорошо отформатирован, значения разделены несколькими пробелами, а также некоторые вкладки, поэтому в возвращаемых списках есть много пустых элементов, как мне их удалить / избежать?

Это мой текущий код:

import re

f = open('myfile.txt','r') 

for line in f.readlines(): 
    if re.search(r'\bDeposit', line):
        print line.split(' ')

f.close()

Спасибо

Ответы [ 4 ]

11 голосов
/ 17 февраля 2010

Не указывайте явно ' ' в качестве разделителя.line.split() будет разделен на все пробелы.Это эквивалентно использованию re.split:

>>> line = '  a b   c \n\tg  '
>>> line.split()
['a', 'b', 'c', 'g']
>>> import re
>>> re.split('\s+', line)
['', 'a', 'b', 'c', 'g', '']
>>> re.split('\s+', line.strip())
['a', 'b', 'c', 'g']
2 голосов
/ 17 февраля 2010
for line in open("file"):
    if " Deposit" in line:
         line=line.rstrip()
         print line.split()

Обновление:

for line in open("file"):
    if "Deposit" in line:
         line=line.rstrip()
         print line[line.index("Deposit"):].split()
1 голос
/ 17 февраля 2010
linesAsLists = [line.split() for line in open('myfile.txt', 'r') if 'Deposit' in line)]
0 голосов
/ 17 февраля 2010

Почему бы не сделать line.strip() перед обработкой? Кроме того, вы можете использовать re.split, чтобы использовать регулярное выражение, например '\ s +', в качестве разделителя.

...