Ответ 1
Я бы рекомендовал сказать
line.split(";")[0]
который даст вам строку всех символов, но не включая первый ";" персонаж. Если нет ";" символ присутствует, то он даст вам всю строку.
Скажем, я разбираю файл, который использует ;
как символ комментария. Я не хочу разбирать комментарии. Поэтому, если строка выглядит так:
example.com. 600 IN MX 8 s1b9.example.net ; hello!
Есть ли более простой/более элегантный способ выделения символов помимо этого:
rtr = ''
for line in file:
trig = False
for char in line:
if not trig and char != ';':
rtr += char
else:
trig = True
if rtr[max(rtr)] != '\n':
rtr += '\n'
Я бы рекомендовал сказать
line.split(";")[0]
который даст вам строку всех символов, но не включая первый ";" персонаж. Если нет ";" символ присутствует, то он даст вам всю строку.
просто выполните разделение на строку комментарием, затем получите первый элемент например,
line.split(";")[0]
Для Python 2.5 или более, я бы использовал метод partition
:
rtr = line.partition(';')[0].rstrip() + '\n'
file = open(r'c:\temp\test.txt', 'r')
for line in file: print
line.split(";")[0].strip()
Таким образом, вы захотите разделить строку на первую точку с запятой, взять все перед ней, удалить все затяжные пробелы и добавить символ новой строки.
rtr = line.split(";", 1)[0].rstrip() + '\n'
Ссылки на документацию:
Чтение, разбиение, удаление и объединение строк с новой строкой в одной строке python:
rtr = '\n'.join(line.split(';')[0].strip() for line in open(r'c:\temp\test.txt', 'r'))
Вот еще один способ:
In [6]: line = "foo;bar" In [7]: line[:line.find(";")] + "\n" Out[7]: 'foo\n'
Я не тестировал это с помощью python, но я использую аналогичный код еще где.
import re
content = open(r'c:\temp\test.txt', 'r').read()
content = re.sub(";.+", "\n")