0

ファイルに用語のリストがあり、それを読み、各用語を変更し、新しい用語を新しいファイルに出力します。新しい用語は次のようになります。元の用語の最初の 2 文字を引用符で囲み、「=>」を追加してから元の用語を引用符で囲み、コンマを追加します。

これは私が使用しているコードです:

def newFile(newItem):
    original = line
    first = line[0:2]
    newItem = first+'=>'+original+',' 
    return newItem
input = open('/Users/george/Desktop/input.txt', 'r')
output = open('/Users/george/Desktop/output.txt', 'w')
collector = ''
for line in input: 
   if len(line) != 0:
       collector = newFile(input)
       output.write(''.join(collector))
   if len(line) == 0:
       input.close()
output.close() 

例: input.txt ファイル内の用語が次の場合: term 1 term 2 term 3 term 4

出力は次のとおりです。

te=>term 1
,te=>term 2
,te=>term 3
,te=>term 4    
,

''最初の 2 文字と用語に追加するにはどうすればよいですか? そして、なぜ第 2 項、第 3 項、および第 4 項がそうあるべきでは,teないteのでしょうか?

4

1 に答える 1

3

を使用する代わりに、collector新しいnewFile()変数を使用できます。

modified_line = "'%s'=>'%s',"  % (line[:2], line.strip())

そしてあなたのループでこれを試してください:

...
if len(line) > 2:
    output.write('%s\n' % (modified_line))

また:

  • 可能であれば、プログラムでファイル名をハードコーディングせずsys.argv、標準入出力または構成ファイルを使用してください。もちろん、入力/出力名がわかっている場合は、それらを使用してください
  • 0を省略しline[0:2]てラインを使用できます[:2]
  • 使用する必要がありますtry:-ファイルを開く-ファイルを読むなど.ファイルをfinally:閉じる
  • len(line) == 0ifをチェックする必要はありません。forすでにループしており、空の行の場合は CRLF の行を受け取りますが、入力ファイルの最後はforループが終了したときです。
于 2012-08-16T11:21:34.207 に答える