回答編集履歴

6

テキスト追加

2021/11/27 08:30

投稿

退会済みユーザー
test CHANGED
@@ -121,3 +121,61 @@
121
121
  ```
122
122
 
123
123
  `awk`も便利なのでちょっとお調べになってみるとよいかもしれません。
124
+
125
+
126
+
127
+
128
+
129
+ ### 備考3
130
+
131
+
132
+
133
+ 質問にある google drive にあるファイルをダウンロードして `outputA.txt` というファイルに保存してテキストエディタ(vi)で開いてみると、以下のようになっています。
134
+
135
+
136
+
137
+ ![イメージ説明](28140007d3e3196c78b2fc9cacb74cf2.png)
138
+
139
+
140
+
141
+ これを見るに、`^M`は `\r`(キャリッジリターン)ですので、元々、`outputA.txt` はスペース1個をデリミタとするCSVにしようとして、し損なっているかのようにも思えました。とまれ、現状は上記のようになっているので、`\r` を削除すれば、スペース1個区切りのCSVになります。それには、Pythonでプログラムを書かなくても `sed`コマンドで可能です。
142
+
143
+
144
+
145
+ ```shell-session
146
+
147
+ $ sed -e "s/\r//g" outputA.txt | head -5
148
+
149
+ SZ VZ VA LAD BRF_toc BRF_toa
150
+
151
+ 10 30 0 0.004976 0.076048 0.080558
152
+
153
+ 10 30 0 0.04976 0.071202 0.075713
154
+
155
+ 10 30 0 0.2488 0.057755 0.066864
156
+
157
+ 10 30 0 0.4976 0.046093 0.058653
158
+
159
+ ```
160
+
161
+
162
+
163
+ または、先ほどの`awk`を使って桁をそろえると、以下のようになります。
164
+
165
+
166
+
167
+ ```shell-session
168
+
169
+ $ sed -e "s/\r//g" outputA.txt | awk '{printf "%2s %2s %-2s %-8s %-8s %-8s\n", $1, $2, $3, $4, $5, $6}' | head -5
170
+
171
+ SZ VZ VA LAD BRF_toc BRF_toa
172
+
173
+ 10 30 0 0.004976 0.076048 0.080558
174
+
175
+ 10 30 0 0.04976 0.071202 0.075713
176
+
177
+ 10 30 0 0.2488 0.057755 0.066864
178
+
179
+ 10 30 0 0.4976 0.046093 0.058653
180
+
181
+ ```

5

テキスト追加

2021/11/27 08:30

投稿

退会済みユーザー
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
 
74
74
 
75
- 何らかのドキュメントの中で、そのドキュメントの文脈の中で`CSV` とは、カンマで区切りに限定せず、何らかのデリミタ文字による区切りのほうの Character Separated Value を表しているということを明記しているものの例を探すと、以下のようなものがありました。
75
+ 何らかのドキュメントの中で、そのドキュメントの文脈の中で`CSV` とは、区切りをカンマに限定せず、何らかのデリミタ文字による区切りのほうの Character Separated Value を表しているということを明記しているものの例を探すと、以下のようなものがありました。
76
76
 
77
77
 
78
78
 
@@ -92,7 +92,7 @@
92
92
 
93
93
 
94
94
 
95
- - 質問のタイトルが、「テキストファイルをcsvファイルに変換したい」というものだったので、上記の回答は 質問のタイトルどおり、(デリミタがカンマ以外もあるうるという意味で広義の)CSVファイルを出力することを最優先にしています。
95
+ - 質問のタイトルが、「テキストファイルをcsvファイルに変換したい」というものだったので、上記の回答は 質問のタイトルどおり、(デリミタがカンマ以外もあり得るという意味で広義の)CSVファイルを出力することを最優先にしています。
96
96
 
97
97
 
98
98
 

4

テキスト追加

2021/11/27 07:34

投稿

退会済みユーザー
test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
 
70
70
 
71
- ### 備考
71
+ ### 備考1
72
72
 
73
73
 
74
74
 
@@ -81,3 +81,43 @@
81
81
 
82
82
 
83
83
  ただし、一般的には CSV と言われると、デリミタについて特に何の言及もない場合は、デリミタはカンマであると想定する、すなわちCSVのCは、Commmaの略であることを暗黙の了解とするのが通例です。
84
+
85
+
86
+
87
+ ### 備考2
88
+
89
+
90
+
91
+ tatsu4941さんへ
92
+
93
+
94
+
95
+ - 質問のタイトルが、「テキストファイルをcsvファイルに変換したい」というものだったので、上記の回答は 質問のタイトルどおり、(デリミタがカンマ以外もあるうるという意味で広義の)CSVファイルを出力することを最優先にしています。
96
+
97
+
98
+
99
+ - デリミタをスペース1個にしたのは、入力ファイルのデータ行に `10 30` や `0.031592 0.047514` といった、スペース1個区切りの行が元からあるので、これを踏襲したものです。
100
+
101
+
102
+
103
+ - ちなみに上記で回答したコードによって出力された、スペース1個区切りのCSVファイル`outputB.csv`を質問にあるような、各列を何らかの桁数で揃えたテキストを得るのは、プログラムを書かなくても `awk` というコマンドを使えばできます。
104
+
105
+
106
+
107
+ ```shell-session
108
+
109
+ $ awk '{printf "%2s %2s %-2s %-8s %-8s %-8s\n", $1, $2, $3, $4, $5, $6}' outputB.csv | head -5
110
+
111
+ SZ VZ VA LAD BRF_toc BRF_toa
112
+
113
+ 10 30 0 0.004976 0.076048 0.080558
114
+
115
+ 10 30 0 0.04976 0.071202 0.075713
116
+
117
+ 10 30 0 0.2488 0.057755 0.066864
118
+
119
+ 10 30 0 0.4976 0.046093 0.058653
120
+
121
+ ```
122
+
123
+ `awk`も便利なのでちょっとお調べになってみるとよいかもしれません。

3

テキスト追加

2021/11/27 07:09

投稿

退会済みユーザー
test CHANGED
@@ -80,4 +80,4 @@
80
80
 
81
81
 
82
82
 
83
- ただし、一般的には CSV と言われると、デリミタについて特に何の言及もない場合は、デリミタはカンマであると想定するのが通例です。
83
+ ただし、一般的には CSV と言われると、デリミタについて特に何の言及もない場合は、デリミタはカンマであると想定する、すなわちCSVCは、Commmaの略であることを暗黙の了解とするのが通例です。

2

テキスト追加

2021/11/27 05:11

投稿

退会済みユーザー
test CHANGED
@@ -62,9 +62,13 @@
62
62
 
63
63
  ```
64
64
 
65
+ - **サンプル** ???? [tera: 371196](https://replit.com/@kilesa/tera-371196?v=1) @replit.com
65
66
 
66
67
 
68
+
69
+
70
+
67
-
71
+ ### 備
68
72
 
69
73
 
70
74
 

1

テキスト追加

2021/11/27 05:09

投稿

退会済みユーザー
test CHANGED
@@ -61,3 +61,19 @@
61
61
  f_in.close()
62
62
 
63
63
  ```
64
+
65
+
66
+
67
+ 参考:
68
+
69
+
70
+
71
+ 何らかのドキュメントの中で、そのドキュメントの文脈の中で`CSV` とは、カンマで区切りに限定せず、何らかのデリミタ文字による区切りのほうの Character Separated Value を表しているということを明記しているものの例を探すと、以下のようなものがありました。
72
+
73
+
74
+
75
+ - [Character Separated Value (CSV) files and reports](https://www.ibm.com/docs/en/mufz/4.1?topic=files-character-separated-value-csv-reports) - IBM z/OSオペレーティング・システム
76
+
77
+
78
+
79
+ ただし、一般的には CSV と言われると、デリミタについて特に何の言及もない場合は、デリミタはカンマであると想定するのが通例です。