回答編集履歴

3

typo

2021/10/11 06:03

投稿

TakaiY
TakaiY

スコア13790

test CHANGED
@@ -166,7 +166,7 @@
166
166
 
167
167
 
168
168
 
169
- 菊花けとして、手順を書くと
169
+ きっかけとして、手順を書くと
170
170
 
171
171
  - for文の中で実施
172
172
 
@@ -182,4 +182,4 @@
182
182
 
183
183
 
184
184
 
185
- こんなじでしょう。
185
+ こんなじでしょう。

2

追記その2

2021/10/11 06:03

投稿

TakaiY
TakaiY

スコア13790

test CHANGED
@@ -151,3 +151,35 @@
151
151
 
152
152
 
153
153
  うまくいったでしょうか?。 余計な「"」とかが入っているかもしれません。そういう場合はDictReaderのパラメータを調整するといいかもしれません。
154
+
155
+
156
+
157
+
158
+
159
+ ---
160
+
161
+
162
+
163
+ ファイルへの出力については、web上にたくさんの情報がありますから、それを参考にしてつくってみるのがいいと思います。
164
+
165
+ 慣れればなんということはありませんが、ファイルへの書き込みも、 ファイル名の生成もそれほど簡単ではありません。
166
+
167
+
168
+
169
+ 菊花けとして、手順を書くと
170
+
171
+ - for文の中で実施
172
+
173
+ - ファイル名を生成する
174
+
175
+ csvに姓と名が入っているのであれば、 `filename = '{姓}_{名}様.txt'.format(**items)`で作れるでしょう。
176
+
177
+ - ファイルを書き込み権限でopenする
178
+
179
+ withを使うと便利
180
+
181
+ - 開いたファイルに文字列 を書き込み。
182
+
183
+
184
+
185
+ こんな観じでしょう。

1

質問を受けて追記

2021/10/11 05:37

投稿

TakaiY
TakaiY

スコア13790

test CHANGED
@@ -51,3 +51,103 @@
51
51
 
52
52
 
53
53
  もっと込み入ったテンプレートを利用したいのであれば、jinja2あたりを使うと、繰り返しや条件分岐なども表現できますが、今回はそこまで必要ではなさそうですね。
54
+
55
+
56
+
57
+ ---
58
+
59
+
60
+
61
+ だいぶ進みましたね。
62
+
63
+ 質問のコードはまだ途中で、もうひといきです。
64
+
65
+ 参考にされたサイトの[ここにある説明のデータ抽出方法](https://qiita.com/motoki1990/items/0274d8bcf1a97fe4a869#csvdictreader)のところの処理までやらないと、データが出てきません。
66
+
67
+
68
+
69
+ まずは、今回のテンプレートへの差し込みでは、辞書形式でデータを取り出すので、リスト形式は不要です。
70
+
71
+ ```python
72
+
73
+ import csv
74
+
75
+
76
+
77
+ csv_file = open("meisai_data.csv", "r", encoding="utf-8", errors="", newline="" )
78
+
79
+ #辞書形式
80
+
81
+ f = csv.DictReader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
82
+
83
+ ```
84
+
85
+ いろいろオプションが付いていますが、出力結果が適当でない場合はここを調整する必要があるかもしれません。 まずは何もつけないでやってもいいかもしれませんね。
86
+
87
+
88
+
89
+ **ポイントはこの「f」がリーダーなので、for文で回すと1行ずつ取りだすことができるってところです**
90
+
91
+ まずは、内容がちゃんととりだせるかどうか確認します。
92
+
93
+
94
+
95
+ ```python
96
+
97
+ for items in f:
98
+
99
+ print(items)
100
+
101
+ ```
102
+
103
+
104
+
105
+ こうすると、csvの内容が、辞書形式で表示されるのがわかると思います。
106
+
107
+ 辞書形式で19個の項目がでてきていればいいでしょう。 こまかいところまで確認できればなおよいです。
108
+
109
+
110
+
111
+ 問題なければ、差し込んでみます。
112
+
113
+ できあがるコードはこんな観じでしょうね。
114
+
115
+
116
+
117
+ ```python
118
+
119
+ import csv
120
+
121
+
122
+
123
+ csv_file = open("meisai_data.csv", "r", encoding="utf-8", errors="", newline="" )
124
+
125
+ #辞書形式
126
+
127
+ f = csv.DictReader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
128
+
129
+
130
+
131
+ template = '''
132
+
133
+ こんにちは。 名前は{姓}。
134
+
135
+ 今{名}歳です。
136
+
137
+ '''
138
+
139
+
140
+
141
+ for items in f:
142
+
143
+ print(template.format(**items)
144
+
145
+
146
+
147
+ csv_file.close()
148
+
149
+ ```
150
+
151
+
152
+
153
+ うまくいったでしょうか?。 余計な「"」とかが入っているかもしれません。そういう場合はDictReaderのパラメータを調整するといいかもしれません。