2017-03-05 1 views
0

にここに私のコードです:CSVで行がスキップされることなく、行にデータを挿入するにはどうすればよいですか? PYTHON

def insert_row(): 
    import fileinput 
    import csv 
    sk= raw_input("\nWhat SKU would you like to insert?: ") 
    pos= int(raw_input("\nAt what row?: ")) 

    with open("files.csv","rb") as f: 
      lines = f.readlines() 

    lines.insert(pos, sk) 
    with open("files.csv","wb") as f: 
      for line in lines: 
       f.write(line+'\n') 

はC14l

の助けを借りてこれを得た。しかし、私はそれがラインをスキップ挿入しようとすると、これは「\ nの」によって引き起こされる問題が、あります、私はそれを削除しようとしたとき、それはちょうどその位置の文字列に連結されました。それが正しく挿入される方法はありますか?ここで

が私の現在のコードは、 "フィリップ" を挿入した結果だ:

SASA

DA

フィリップ
AF

FAF

AD

FAF

FAF

が、私はそれになりたい:

SASA
DA
が フィリップ
AF
FAF
AD
FAF FAF

実行するためにどのように任意のアイデアこれは行ごとにスキップすることなくライン?私はここでたくさんのことを実験しました。理由を見つけることができません。ループが完了した後に新しい行だけが追加されることを期待して、ループの後に別のf.write(line+'\n')を追加しようとしました。それを作る

for line in lines: 
    f.write(line) 
    f.write(line+'\n') 

答えて

0

ファイル内のすべての行は改行を持っています。しかし、raw_inputの新しい行に改行が含まれていません。コードでは、改行をすべての行に追加します。既存の行の改行を2倍にし、空の行を作成します。

関数は、その後から行を読み取ります。raw_input()のドキュメントを見てみましょう f.write(line)

:上の新しい行に改行を追加するだけにしてみてください。 lines.insert(pos, sk + '\n') そして、最後の行を変更それを文字列に変換し(末尾の改行を取り除く)、それを返します。

0

は解決策を見つけた:

sk= raw_input("\nWhat SKU would you like to insert?: ") 
pos= int(raw_input("\nAt what row?: ")) 

with open("files.csv","r") as f: 
    lines = f.readlines() 

lines.insert(pos, sk + '\n') 

with open("files.csv","w") as f: 
    for line in lines: 
     f.write(line) 
関連する問題