teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

typo

2021/10/11 06:03

投稿

TakaiY
TakaiY

スコア14534

answer CHANGED
@@ -82,7 +82,7 @@
82
82
  ファイルへの出力については、web上にたくさんの情報がありますから、それを参考にしてつくってみるのがいいと思います。
83
83
  慣れればなんということはありませんが、ファイルへの書き込みも、 ファイル名の生成もそれほど簡単ではありません。
84
84
 
85
- 菊花けとして、手順を書くと
85
+ きっかけとして、手順を書くと
86
86
  - for文の中で実施
87
87
  - ファイル名を生成する
88
88
  csvに姓と名が入っているのであれば、 `filename = '{姓}_{名}様.txt'.format(**items)`で作れるでしょう。
@@ -90,4 +90,4 @@
90
90
  withを使うと便利
91
91
  - 開いたファイルに文字列 を書き込み。
92
92
 
93
- こんなじでしょう。
93
+ こんなじでしょう。

2

追記その2

2021/10/11 06:03

投稿

TakaiY
TakaiY

スコア14534

answer CHANGED
@@ -74,4 +74,20 @@
74
74
  csv_file.close()
75
75
  ```
76
76
 
77
- うまくいったでしょうか?。 余計な「"」とかが入っているかもしれません。そういう場合はDictReaderのパラメータを調整するといいかもしれません。
77
+ うまくいったでしょうか?。 余計な「"」とかが入っているかもしれません。そういう場合はDictReaderのパラメータを調整するといいかもしれません。
78
+
79
+
80
+ ---
81
+
82
+ ファイルへの出力については、web上にたくさんの情報がありますから、それを参考にしてつくってみるのがいいと思います。
83
+ 慣れればなんということはありませんが、ファイルへの書き込みも、 ファイル名の生成もそれほど簡単ではありません。
84
+
85
+ 菊花けとして、手順を書くと
86
+ - for文の中で実施
87
+ - ファイル名を生成する
88
+ csvに姓と名が入っているのであれば、 `filename = '{姓}_{名}様.txt'.format(**items)`で作れるでしょう。
89
+ - ファイルを書き込み権限でopenする
90
+ withを使うと便利
91
+ - 開いたファイルに文字列 を書き込み。
92
+
93
+ こんな観じでしょう。

1

質問を受けて追記

2021/10/11 05:37

投稿

TakaiY
TakaiY

スコア14534

answer CHANGED
@@ -24,4 +24,54 @@
24
24
  pandasを使ってもできるでしょう。
25
25
 
26
26
 
27
- もっと込み入ったテンプレートを利用したいのであれば、jinja2あたりを使うと、繰り返しや条件分岐なども表現できますが、今回はそこまで必要ではなさそうですね。
27
+ もっと込み入ったテンプレートを利用したいのであれば、jinja2あたりを使うと、繰り返しや条件分岐なども表現できますが、今回はそこまで必要ではなさそうですね。
28
+
29
+ ---
30
+
31
+ だいぶ進みましたね。
32
+ 質問のコードはまだ途中で、もうひといきです。
33
+ 参考にされたサイトの[ここにある説明のデータ抽出方法](https://qiita.com/motoki1990/items/0274d8bcf1a97fe4a869#csvdictreader)のところの処理までやらないと、データが出てきません。
34
+
35
+ まずは、今回のテンプレートへの差し込みでは、辞書形式でデータを取り出すので、リスト形式は不要です。
36
+ ```python
37
+ import csv
38
+
39
+ csv_file = open("meisai_data.csv", "r", encoding="utf-8", errors="", newline="" )
40
+ #辞書形式
41
+ f = csv.DictReader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
42
+ ```
43
+ いろいろオプションが付いていますが、出力結果が適当でない場合はここを調整する必要があるかもしれません。 まずは何もつけないでやってもいいかもしれませんね。
44
+
45
+ **ポイントはこの「f」がリーダーなので、for文で回すと1行ずつ取りだすことができるってところです**
46
+ まずは、内容がちゃんととりだせるかどうか確認します。
47
+
48
+ ```python
49
+ for items in f:
50
+ print(items)
51
+ ```
52
+
53
+ こうすると、csvの内容が、辞書形式で表示されるのがわかると思います。
54
+ 辞書形式で19個の項目がでてきていればいいでしょう。 こまかいところまで確認できればなおよいです。
55
+
56
+ 問題なければ、差し込んでみます。
57
+ できあがるコードはこんな観じでしょうね。
58
+
59
+ ```python
60
+ import csv
61
+
62
+ csv_file = open("meisai_data.csv", "r", encoding="utf-8", errors="", newline="" )
63
+ #辞書形式
64
+ f = csv.DictReader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
65
+
66
+ template = '''
67
+ こんにちは。 名前は{姓}。
68
+ 今{名}歳です。
69
+ '''
70
+
71
+ for items in f:
72
+ print(template.format(**items)
73
+
74
+ csv_file.close()
75
+ ```
76
+
77
+ うまくいったでしょうか?。 余計な「"」とかが入っているかもしれません。そういう場合はDictReaderのパラメータを調整するといいかもしれません。