だから私がやりたいことは比較的単純に思えますが、私の人生では、それを完全に理解することはできません. 次のような.txtファイルがあります
4 2
6 5 1
9 4 5
そして、その情報を利用できるようにしたい (つまり、必要でない限り、新しい .txt ファイルを作成する必要はありません)...
3 1
5 4 0
8 3 4
または、1
すべての数値から減算されますが、書式設定は同じままです。元の数値よりも大きい数値は存在1
しないため、負数は使用できません。0
この全体的な頭痛の種は、代わりにインデックス作成を最初から変換することによるものです1
。物事を複雑にする可能性があるのは、元のファイルが次のように印刷されることです
['4 2 /n','6 5 1 /n', '9 4 5 /n']
私がしたこと
それは私が StackOverflow で見つけたさまざまなものの寄せ集めですが、可能な限り最も面倒な方法でそれを行っていると思います。そして、これは私が実装したときに意味がありませんでした..スペースの問題と同じ軌道に乗っているかもしれませんが..
origianl = open(file, 'r')
for line in original.readlines():
newline = line.replace(" \n","")
finalWithStrings.append(newline)
finalWithIntegers = [map(int,x) for x in finalWithStrings]
finalWithIntegers[:] = [x-1 for x in finalWithIntegers]
私の思考プロセスは、「/n」を削除し、これらの文字列を整数に変換して1
、それらから減算できるようにする必要があるというものでした。そして、どういうわけかフォーマットを維持します。各行には、別のファイルの同様に索引付けされた行に関する情報が含まれているため、フォーマットを同じにすることが重要です。最終結果 (または print ステートメント) に "/n" を表示したくありませんが、改行の効果が必要です。ただし、上記のコードは 2 つの理由 (私が知っている) で機能しません。
int(n[:])
スペースが気に入らないためエラーがスローされ、そこに値(たとえば0)を入力すると、コードは各行に最初の数字を出力し、1を減算します..そしてすべてを1行に配置します。
[3, 5, 8]
したがって、キャリッジ リターンを取り出して別のキャリッジ リターンを挿入するのは冗長に思えますが、すべての数値を取得する方法だけでなく、書式を維持する必要もあります。
これもうまくいきませんでした:
for line in original.readlines():
newline = line.replace(" \n","")
finalWithStrings.append(newline)
finalWithIntegers = [map(int,x) for x in finalWithStrings]
finalWithIntegers[:] = [x-1 for x in finalWithIntegers]
しかし、間違った出力ではなく、エラーでした:
ValueError:invalid literal for int() with base 10:''
ここで私が間違っていることと、これを修正する方法について誰か考えがありますか? 私は Python 2.6 を使用しており、初心者です。