回答編集履歴
6
テキスト追加
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
テキスト追加
test
CHANGED
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
何らかのドキュメントの中で、そのドキュメントの文脈の中で`CSV` とは、カンマ
|
75
|
+
何らかのドキュメントの中で、そのドキュメントの文脈の中で`CSV` とは、区切りをカンマに限定せず、何らかのデリミタ文字による区切りのほうの Character Separated Value を表しているということを明記しているものの例を探すと、以下のようなものがありました。
|
76
76
|
|
77
77
|
|
78
78
|
|
@@ -92,7 +92,7 @@
|
|
92
92
|
|
93
93
|
|
94
94
|
|
95
|
-
- 質問のタイトルが、「テキストファイルをcsvファイルに変換したい」というものだったので、上記の回答は 質問のタイトルどおり、(デリミタがカンマ以外もある
|
95
|
+
- 質問のタイトルが、「テキストファイルをcsvファイルに変換したい」というものだったので、上記の回答は 質問のタイトルどおり、(デリミタがカンマ以外もあり得るという意味で広義の)CSVファイルを出力することを最優先にしています。
|
96
96
|
|
97
97
|
|
98
98
|
|
4
テキスト追加
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
テキスト追加
test
CHANGED
@@ -80,4 +80,4 @@
|
|
80
80
|
|
81
81
|
|
82
82
|
|
83
|
-
ただし、一般的には CSV と言われると、デリミタについて特に何の言及もない場合は、デリミタはカンマであると想定するのが通例です。
|
83
|
+
ただし、一般的には CSV と言われると、デリミタについて特に何の言及もない場合は、デリミタはカンマであると想定する、すなわちCSVのCは、Commmaの略であることを暗黙の了解とするのが通例です。
|
2
テキスト追加
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
テキスト追加
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 と言われると、デリミタについて特に何の言及もない場合は、デリミタはカンマであると想定するのが通例です。
|