0

次のコードを使用して、「:」特殊文字を含むすべての行を見つけています。後で、ファイルからこれらの行を削除しようとしています-

myFile = open('myPOST.txt', 'rb')
    myText = myFile.readlines()
    for line in myText:
             line.find(":") == "-1"
         if line.find(":"):

この文字が見つかった行を正確に返すPythonの関数はありますか(find()は-1または行内の検索された文字の位置を返します)またはfind()のみを使用する場合、それらの行を正確に削除する方法find() の値は -1 ですか?

4

2 に答える 2

3

使用するfileinput

オプションのインプレース フィルタリング: キーワード引数がコンストラクターまたはコンストラクターにinplace=1渡される場合、ファイルはバックアップ ファイルに移動され、標準出力は入力ファイルに送信されます (バックアップ ファイルと同じ名前のファイルが既に存在する場合、サイレントに置き換えられます)。これにより、入力ファイルをその場で書き換えるフィルターを作成できます。fileinput.input()FileInput

myPOST.txt

abc
de:f
ghi

import fileinput
for line in fileinput.input('myPOST.txt', inplace=True): 
    if ':' in line:
        continue # skip it
    print line.rstrip('\n') # stdout redirected to file

myPOST.txt

abc
ghi

このソリューションの良いところは.readlines()、ファイル全体をメモリにロードするのではなく、元の名前に変更された一時ファイルに書き込むことです。

于 2013-05-10T13:04:59.483 に答える
1

Excelのようなコマンド ライン ユーティリティを使用せずに、既存のプログラム内で実行したいだけの場合fileinput

with open("myPOST.txt", "rb") as my_file:
    for line in my_file:
        if ":" not in line:
            # do whatever you want here
            # these are only the lines that do not have a ':' character

行番号だけを知りたい場合

line_numbers = []
with open("myPOST.txt", "rb") as my_file:
    for line_num, line in enumerate(my_file):
        if ":" in line:
            line_number.append(line_num)
于 2013-05-10T15:34:15.683 に答える