2

私はPythonでテキストファイルを書き直そうとしていました。ファイルに入り、各行を取得し、その行に追加の文字列を追加してから、新しく追加された行をテキストファイルに書き直します。私が抱えている問題は、この新しく作成されたテキストファイルが正しくフォーマットされていないことです。ファイルには行が含まれ、各行にはコンマで区切られた3つの数字が含まれます。私のファイルが次のようになっている場合:

57.88, 58.45, 45.31
57.88, 58.45, 45.31
57.88, 58.45, 45.31

そして、行に文字「a」を追加したいので、ファイルは次のようになります。

57.88, 58.45, 45.31, a
57.88, 58.45, 45.31, a
57.88, 58.45, 45.31, a

代わりに、このようなファイル形式(emacsとgeditの両方で開いた場合)

57.88, 58.45, 45.31
,a
57.88, 58.45, 45.31
,a
57.88, 58.45, 45,31
,a

興味深いことに、ファイルの形式に関係なく、行数は同じ(3)です。私はこれについて本当に混乱していて、いくらかイライラしています。以下は、ファイルの書き換えに使用しているコードです。私のPythonスキルは実際に必要に応じて習得されているので、聞いたことのない明らかなPython関数を使用する必要があるかもしれません。基本的に、ファイルパスが存在することを確認したら、以下に示す書き換えサブルーチンを呼び出します。

def getLines(filePath):
    move(filePath, filePath+"~")
    destination = open(filePath, "w")
    source = open(filePath+"~", "r")
    for line in source:
            destination.write(line.strip("\n") + ",a\n"))
    source.close()
    destination.close()
4

2 に答える 2

3

あまり明示的ではなく、ストリップにクロスプラットフォームソリューションの作業を任せることができます

...
for line in source:
    destination.write(line.strip() + ",a\n"))

または、これを試してください。

for line in source.readlines()
    destination.write(line + ",a\n"))
于 2013-03-18T18:58:29.563 に答える
2

Unix 以外のプラットフォームを使用している場合、ファイルに\r\n行末記号が含まれている可能性があります。正しいストリッピング\r\nとアペンドを試してください",a\r\n"

destination.write(line.rstrip("\r\n") + ",a\r\n"))

これは、ファイルに\n行末のみが含まれている場合でも機能するため、堅牢です。

于 2013-03-18T18:54:42.347 に答える