Python 2.4 で、「;」の後の文字を削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1178335

  •  19-09-2019
  •  | 
  •  

質問

ファイルを解析しているとします。 ; コメント文字として。コメントを解析したくない。したがって、行が次のようになったとします。

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")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top