web-dev-qa-db-ja.com

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'
33
lfaraone

と言ってお勧めします

line.split(";")[0]

これにより、最初の「;」までのすべての文字列が得られます。キャラクター。 「;」がない場合文字が存在する場合、行全体が表示されます。

103
Eli Courtwright

コメントで行を分割し、最初の要素を取得するだけです

line.split(";")[0]
15
ghostdog74

Python 2.5以上の場合、 partition メソッドを使用します。

rtr = line.partition(';')[0].rstrip() + '\n'
4
Sinan Ünür
file = open(r'c:\temp\test.txt', 'r')
for line in file:   print
   line.split(";")[0].strip()
3
Gern Blanston

したがって、最初のセミコロンで行を分割し、その前にあるすべてのものを取り、残っている空白をすべて取り除き、改行文字を追加します。

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

ドキュメントへのリンク:

2
tgray

Pythonの1行で、改行を読み取り、分割、削除、および結合します。

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

別の方法を次に示します。

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