Пытаясь понять .strip - PullRequest
0 голосов
/ 28 мая 2018

У меня есть файл с именем input.py, который содержит следующее:

#This is a file of categories
Animals:    cat, dog, frog, cheetah, tiger
Items:      desk, chair, bus, cups, pencil

Technology: cellphone, TV, laptop, wifi-router
    #That's the end of the file

, и я хочу отфильтровать все пустые строки и строки, начинающиеся с #, чтобы получить output.py:

Animals:    cat, dog, frog, cheetah, tiger
Items:      desk, chair, bus, cups, pencil
Technology: cellphone, TV, laptop, wifi-router

Мой код

with open('input.py', 'r') as infile, open('output.py', 'w') as outfile:
    for line in infile:
        if line[0].strip('') == '#' or line == '\n':
            pass
        else:
            outfile.write(line)

, но он не удаляется со строки, начинающейся с табуляции.Я пытался заменить .strip('') на .strip('\t'), но получаю тот же вывод:

Animals:    cat, dog, frog, cheetah, tiger
Items:      desk, chair, bus, cups, pencil
Technology: cellphone, TV, laptop, wifi-router
    #That's the end of the file

Почему .strip('') или .strip('\t') не удаляются с вкладки?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Метод Strip может удалять только символы из начала или конца строки.Попробуйте использовать заменить вместо.

>>> line = "Animals:    cat, dog, frog, cheetah, tiger"
>>> line.replace('\t', ' ')
'Animals: cat, dog, frog, cheetah, tiger'
0 голосов
/ 28 мая 2018

Вы забыли фактически применить strip для соответствующих строк в вашем else состоянии.Кроме того, используйте str.startswith, чтобы проверить, начинается ли ваша строка с определенной строки.

Вот полный пример:

from io import StringIO

mystr = StringIO("""Animals:    cat, dog, frog, cheetah, tiger
Items:      desk, chair, bus, cups, pencil

Technology: cellphone, TV, laptop, wifi-router
    #That's the end of the file""")

with mystr as infile:
    for line in infile:
        if line.strip().startswith('#') or line == '\n':
            pass
        else:
            print(line.strip())

Результат:

Animals:    cat, dog, frog, cheetah, tiger
Items:      desk, chair, bus, cups, pencil
Technology: cellphone, TV, laptop, wifi-router
...