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

В Python 2.4, как я могу выделить символы после ';'?

Скажем, я разбираю файл, который использует ; как символ комментария. Я не хочу разбирать комментарии. Поэтому, если строка выглядит так:

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'
4b9b3361

Ответ 1

Я бы рекомендовал сказать

line.split(";")[0]

который даст вам строку всех символов, но не включая первый ";" персонаж. Если нет ";" символ присутствует, то он даст вам всю строку.

Ответ 2

просто выполните разделение на строку комментарием, затем получите первый элемент например,

line.split(";")[0]

Ответ 3

Для Python 2.5 или более, я бы использовал метод partition:

rtr = line.partition(';')[0].rstrip() + '\n'

Ответ 4

file = open(r'c:\temp\test.txt', 'r')
for line in file:   print
   line.split(";")[0].strip()

Ответ 5

Таким образом, вы захотите разделить строку на первую точку с запятой, взять все перед ней, удалить все затяжные пробелы и добавить символ новой строки.

rtr = line.split(";", 1)[0].rstrip() + '\n'

Ссылки на документацию:

Ответ 6

Чтение, разбиение, удаление и объединение строк с новой строкой в ​​одной строке python:

rtr = '\n'.join(line.split(';')[0].strip() for line in open(r'c:\temp\test.txt', 'r'))

Ответ 7

Вот еще один способ:

In [6]: line = "foo;bar"
In [7]: line[:line.find(";")] + "\n"
Out[7]: 'foo\n'

Ответ 8

Я не тестировал это с помощью python, но я использую аналогичный код еще где.

import re
content = open(r'c:\temp\test.txt', 'r').read()
content = re.sub(";.+", "\n")