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

回答編集履歴

2

表記揺れ

2018/09/27 03:58

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -48,7 +48,7 @@
48
48
  複数行書き込むので。
49
49
 
50
50
  もう一度書きますが、
51
- **レコードの要素数が常に一つなのであれば、CSVモジュールの利用に拘る理由は全く無いです。**
51
+ **レコードの要素数が常に一つなのであれば、csvモジュールの利用に拘る理由は全く無いです。**
52
52
 
53
53
  コードの書き方について
54
54
  ---

1

追記

2018/09/27 03:58

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -18,6 +18,38 @@
18
18
 
19
19
  なお、各行一つしかデータを置かないのであれば、**csvモジュールの利用に拘る必要はありません**。
20
20
 
21
+ コメントを受けて
22
+ ---
23
+ こんな感じで書けます。
24
+ ```Python
25
+ a_list = []
26
+ for i in span[:-1]:
27
+ value = float(i.string)
28
+ a_list.append([value, ])
29
+
30
+ with open('some.csv', 'w') as fout:
31
+ writer = csv.writer(fout)
32
+ writer.writerows(a_list)
33
+ ```
34
+
35
+ **変更点:**
36
+ 0. **spanではなくspan[:-1]を巡回**
37
+ データ『応談』が邪魔なのでアドホックに対応。
38
+ 0. **i.stringをfloatにキャスト**
39
+ 数値は数値として扱うのがトラブルが少ないです。
40
+ ただし誤差が発生するので、どうしてもそれを避けたい場合は文字列でも良いです。
41
+ 0. **a_listにデータを加える際、要素数1のリストにした**
42
+ csvとして扱う以上は、1レコードに与える内容はシーケンスにしないと。
43
+ 0. **a_listの作成を一つ目のループに移動**
44
+ ループを分ける必要がないです。
45
+ 0. **with文の利用**
46
+ 一般的にリソースの開閉にはコンテキストマネージャを使うのが常道です。
47
+ 0. **writer.writerowではなくwriter.writerowsを利用**
48
+ 複数行書き込むので。
49
+
50
+ もう一度書きますが、
51
+ **レコードの要素数が常に一つなのであれば、CSVモジュールの利用に拘る理由は全く無いです。**
52
+
21
53
  コードの書き方について
22
54
  ---
23
55
  teratailには、コードを見やすく表示する機能があります。