質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1683閲覧

python3でcsvファイルを読み込んで別のcsvファイルを生成して書き込む

macmac

総合スコア25

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/05/02 02:36

件名のようにしようとして読み込んだファイルを新しいcsvファイルに書き込まれましたが
書き込まれた内容が1行飛ばしに反映されました。

原因がよく分かりません。
ご教示をお願いします。
下記にプログラムを記載します。

import csv
iris = []
file = open('C:/Users/nao/Desktop/python自動化/1/000000C1.csv',"r",encoding="utf_8")

reader = csv.reader(file)
for row in reader:
iris.append(row)

if(len(iris)>=5):

break

file.close()

file= open('C:/Users/nao/Desktop/python自動化/1/C1.csv', 'w',encoding="utf_8")
writer = csv.writer(file)
for row in iris:
writer.writerow(row)
#print(f.read())
file.close()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/05/02 02:59

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
meg_

2020/05/02 03:12

コードは「コードの挿入」で記入してください。
guest

回答1

0

ベストアンサー

Pythonのcsvモジュールを利用し、

Python

1import csv 2file = open('C:/Users/nao/Desktop/python自動化/1/000000C1.csv',"r",encoding="utf_8") 3 4iris = file.read() 5file.close() 6 7file = open('C:/Users/nao/Desktop/python自動化/1/C1.csv', 'w',encoding="utf_8",newline="") 8writer = csv.writer(file) 9writer.writerows(iris) 10 11print(f.read()) 12file.close()

これでどうでしょうか。
csvを読み書きするときに1行ずつではなく、全て一度にするようになっています。
書き込むときの、open関数でnewline=""を追加しています。
####参考にさせていただいたサイト
CSVの読み書き
空白行をなくす方法

関係ないことですが可能であれば、Markdown記法を利用しソースコードの部分は分けて書いていただきたいです。

連番で書き込む方法(追記1)

Python

1import csv 2import os 3 4current_dir = 'C:/Users/nao/Desktop/python自動化/1/' #カレントディレクトリ 5for i in range(20): #引数はファイルの数 6 read_file = "000000C{}.csv".format(i) #読み込むファイル 7 write_file = "C{}.csv".format(i) #書き込むファイル 8 with open(os.path.join(current_dir, read_file), "r", encoding="utf_8") as file: #withを使うことでclose()しなくても良くなる 9 iris = file.read() 10 with open(os.path.join(current_dir, read_file), "r", encoding="utf_8", newline="") as file: 11 writer = csv.writer(file) 12 writer.writerows(iris)

これでできると思います。

投稿2020/05/02 02:55

編集2020/05/02 04:25
glyzinieh

総合スコア222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macmac

2020/05/02 04:00

ご回答ありがとうございます。 根本的になぜ書き込んだ値が1行飛ばしになったのかが分かっていませんでした。 もう一個困っていることがあるのですが、最初読み込んだcsvファイルの名前が000000C1で書き込んだcsvファイルがC1となっていますがこれが連番で20個ほどありましてそれぞれが000000C2とc2、000000C3とC3というように連続で繰り返したいです。 厚かましくて申し訳ありませんがこのような場合はどのようにしたらいいか 分かるようであればご教示をお願いしたいと思います。
glyzinieh

2020/05/02 04:26

一応、追記しましたがWindowsの「名前を変更」を使った方が良い気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問