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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

3521閲覧

Pythonでのテキストファイル読み込みで、"Error could possibly be due to quotes being ignored when a multi-char"が表示される。

comyan

総合スコア14

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2019/07/04 23:07

編集2019/07/04 23:27

0

0

初めて質問いたします。
ファイルを連続で取得し、1つのエクセルにまとめるコードを書いています。
その中で、複数スペースによって整形されたテキストファイル(*末尾に添付)を読み込もうとすると

Expected 3 fields in line 8, saw 5. Error could possibly be due to quotes being ignored when a multi-char delimiter is used.

というエラーが表示されてしまい、処理できません。
以下、ソースコードの抜粋です。

writing = pd.ExcelWriter(output, engine = 'openpyxl') for file in files: rawdata = pd.read_csv(file, delim_whitespace = True, engine = 'python') sample_name = os.path.basename(file) rawdata.to_excel(writing, sheet_name = sample_name) writing.save()

通常のcsvファイルを読み込む処理ではうまくいくことと、エラーメッセージから、元ファイルの記述形式が問題とは思っているのですが、解決できず・・・。

試したこと
・skipinitialspace = Trueの追加
rawdata = pd.read_csv(file, skipinitialspace = True, delim_whitespace = True, engine = 'python')

・元ファイル拡張子の変更('.TXT' から '.csv' へ)

プログラミング初心者かつ初利用のため、質問の内容以外にコードの書き方の問題点や、質問する上で無作法な点がございましたらご指摘いただけますと幸いです。
以上、よろしくお願い申し上げます。

*以下、読み込もうとしているファイルの一例です。

file name xxxxxx.txt
SAMPLE NAME:Sample1
DATE:19/07/05
freq~=freqAt,real~=real/(273+Temp)(273+Tr), LOG(x)=log10(x)
LOG(freq~) LOG(real~) LOG(imag~) LOG(tan) TEMP
20.51105 -10.00000 4.49388 -10.00000 -56.4
20.21002 -10.00000 4.65210 -10.00000 -55.3
19.90899 3.86214 4.66627 0.80421 -54.1
19.51105 4.20427 4.66387 0.45954 -53.3
19.21002 4.26492 4.66484 0.40002 -52.6
18.90899 4.29639 4.72236 0.42602 -52.1
18.51105 4.36708 4.81218 0.44514 -51.6
18.21002 4.51252 4.95935 0.44685 -51.0
20.45453 -10.00000 4.52870 -10.00000 -44.8
20.15350 -10.00000 4.68942 -10.00000 -45.2
19.85247 3.95419 4.70089 0.74671 -45.5
19.45453 4.26314 4.70035 0.43727 -45.9
19.15350 4.28662 4.70281 0.41631 -46.3
18.85247 4.32676 4.75445 0.42765 -46.8
18.45453 4.39678 4.85343 0.45667 -47.2
18.15350 4.53912 4.99812 0.45894 -47.6
20.25432 -10.00000 4.63699 -10.00000 -41.2
19.95329 -10.00000 4.78037 -10.00000 -41.5
19.65226 4.09896 4.78458 0.68565 -41.9
19.25432 4.40305 4.78271 0.37967 -42.1
18.95329 4.39933 4.78708 0.38792 -42.4
18.65226 4.45704 4.82887 0.37199 -42.7
18.25432 4.53606 4.93078 0.39463 -43.0
17.95329 4.66893 5.07986 0.41095 -43.3
19.89742 -10.00000 4.82118 -10.00000 -36.8
19.59639 -10.00000 4.95005 -10.00000 -36.9
19.29536 4.30152 4.95852 0.65706 -37.1
18.89742 4.56489 4.95091 0.38596 -37.4
18.59639 4.54705 4.94943 0.40243 -37.7
18.29536 4.65013 5.00222 0.35218 -37.8
17.89742 4.64590 5.10364 0.45758 -38.0
17.59639 4.91201 5.24597 0.33405 -38.6
19.51399 -10.00000 5.00055 -10.00000 -31.6
19.21296 -10.00000 5.09770 -10.00000 -31.7
18.91193 4.42705 5.11710 0.69002 -32.0
18.51399 4.66147 5.09872 0.43743 -32.3
18.21296 4.70958 5.09053 0.38093 -32.5
17.91193 4.78806 5.13821 0.35005 -32.6
17.51399 4.81009 5.23847 0.42830 -32.8
17.21296 5.08558 5.39259 0.30707 -33.0
18.71228 -10.00000 5.32385 -10.00000 -25.6
18.41125 -10.00000 5.33801 -10.00000 -25.6
18.11022 4.61717 5.38870 0.77166 -25.7
17.71228 4.90662 5.36618 0.45954 -26.0
17.41125 4.99173 5.35886 0.36717 -26.4
17.11022 4.95643 5.41453 0.45818 -26.7
16.71228 5.08753 5.51306 0.42537 -27.2
16.41125 5.37767 5.70028 0.32263 -27.8
5.60279 8.37855 7.78763 -0.59091 -20.6
5.30176 8.38069 7.82209 -0.55862 -20.6
5.00073 8.36372 7.84599 -0.51784 -20.6
4.60279 8.29778 7.84148 -0.45630 -20.8
4.30176 8.23860 7.82627 -0.41251 -21.0
4.00073 8.17158 7.79616 -0.37531 -21.3
3.60279 8.07717 7.76708 -0.31025 -21.8
3.30176 8.01198 7.74378 -0.26817 -22.3
6.07513 8.20831 7.78413 -0.42412 -11.8
5.77410 8.15587 7.80955 -0.34650 -12.0
5.47307 8.08321 7.80703 -0.27638 -12.2
5.07513 7.94574 7.74665 -0.19908 -12.5
4.77410 7.82969 7.68133 -0.14837 -12.8
4.47307 7.70406 7.60148 -0.10265 -13.2
4.07513 7.52159 7.47921 -0.04234 -13.6
3.77410 7.38972 7.38397 -0.00581 -14.1
4.41664 7.73598 7.62306 -0.11289 0.0
4.11561 7.57685 7.53449 -0.04230 -0.3
3.81458 7.40730 7.41577 0.00860 -0.6
3.41664 7.17106 7.22865 0.05767 -0.9
3.11561 6.98908 7.07068 0.08135 -1.3
2.81458 6.80844 6.90122 0.09272 -1.5
2.41664 6.58826 6.67394 0.08565 -1.8
2.11561 6.45319 6.51389 0.06070 -2.2
2.92221 6.91010 7.01241 0.10243 14.0
2.62118 6.71676 6.82470 0.10789 13.9
2.32015 6.54632 6.63900 0.09272 13.6
1.92221 6.34353 6.39470 0.05115 13.3
1.62118 6.21040 6.21786 0.00732 12.8
1.32015 6.09742 6.05639 -0.04105 12.3
0.92221 5.97311 5.86052 -0.11261 11.7
0.62118 5.90176 5.73479 -0.16698 11.2
1.42128 6.15958 6.16658 0.00689 31.8
1.12025 6.03521 5.98338 -0.05178 32.6
0.81922 5.92208 5.80447 -0.11765 33.0
0.42128 5.79725 5.59498 -0.20232 33.0
0.12025 5.71451 5.45445 -0.25995 32.7
-0.18078 5.64841 5.33502 -0.31345 32.6
-0.57872 5.56699 5.19977 -0.36724 32.7
-0.87975 5.51956 5.11847 -0.40121 32.6
0.17255 5.72723 5.48192 -0.24527 53.0
-0.12848 5.67131 5.36502 -0.30619 53.9
-0.42951 5.60715 5.24859 -0.35872 54.0
-0.82745 5.52306 5.11950 -0.40362 53.8
-1.12848 5.46194 5.03428 -0.42783 53.6
-1.42951 5.41484 4.96287 -0.45198 53.9
-1.82745 5.35482 4.87649 -0.47834 54.0
-2.12848 5.32227 4.81410 -0.50822 53.6
-0.57769 5.54168 5.11013 -0.43168 75.3
-0.87872 5.51682 5.03687 -0.48004 76.3
-1.17975 5.47047 4.96152 -0.50878 76.7
-1.57769 5.40762 4.87249 -0.53506 76.4
-1.87872 5.36474 4.80681 -0.55783 75.6
-2.17975 5.33521 4.74484 -0.59040 75.3
-2.57769 5.29654 4.66690 -0.62967 75.4
-2.87872 5.28113 4.62329 -0.65797 75.6
-1.68105 5.40295 4.90306 -0.49976 97.7
-1.98208 5.38907 4.85364 -0.53536 98.7
-2.28311 5.34281 4.79077 -0.55207 99.3
-2.68105 5.27679 4.72346 -0.55331 99.3
-2.98208 5.22899 4.69083 -0.53820 98.5
-3.28311 5.19730 4.68269 -0.51456 97.8
-3.68105 5.14294 4.69981 -0.44322 97.5
-3.98208 5.10173 4.72370 -0.37789 97.6
-3.20137 5.19082 4.84845 -0.34247 110.7
-3.50240 5.16933 4.81081 -0.35843 111.4
-3.80343 5.13092 4.77072 -0.36012 111.2
-4.20137 5.06675 4.74163 -0.32514 110.6
-4.50240 5.00578 4.71576 -0.29022 109.6
-4.80343 4.95107 4.69576 -0.25524 108.6
-5.20137 4.85050 4.66278 -0.18776 108.1
-5.50240 4.77582 4.62577 -0.15003 108.0
-4.86492 4.89451 4.72836 -0.16628 117.6
-5.16595 4.87291 4.69693 -0.17600 118.2
-5.46698 4.82167 4.65942 -0.16222 118.3
-5.86492 4.73128 4.61470 -0.11657 117.8
-6.16595 4.64732 4.57002 -0.07738 116.9
-6.46698 4.55887 4.51420 -0.04475 115.9
-6.86492 4.42669 4.42582 -0.00078 115.1
-7.16595 4.39592 4.36809 -0.02780 114.8
-6.29071 4.60876 4.61134 0.00260 121.6
-6.59174 4.57698 4.57341 -0.00358 122.2
-6.89277 4.47242 4.51717 0.04454 122.0
-7.29071 4.31665 4.43929 0.12254 121.3
-7.59174 4.15236 4.33375 0.18156 120.0
-7.89277 3.86948 4.12385 0.25431 119.3
-8.29071 3.50393 3.87594 0.37199 119.1
-8.59174 3.45500 3.77716 0.32222 119.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ファイルの冒頭にデータまたはヘッダーでないものがあることが原因ではないかと思います。

file name xxxxxx.txt ← ここから SAMPLE NAME:Sample1 DATE:19/07/05 freq~=freq*At,real~=real/(273+Temp)*(273+Tr), LOG(x)=log10(x) ← ここまでが不要データ LOG(freq~) LOG(real~) LOG(imag~) LOG(tan) TEMP 20.51105 -10.00000 4.49388 -10.00000 -56.4 20.21002 -10.00000 4.65210 -10.00000 -55.3

read_csvのリファレンスから skiprows という引数があるので、それを用いて先頭からの数行を飛ばせば良いと思います。

動作としては、
file name xxxxx.txt という行のせいで、フィールドが3つのデータであると認識している可能性が高いです。

なのに

Expected 3 fields in line 8, saw 5.

20.51105 -10.00000 4.49388 -10.00000 -56.4
のような5つのフィールドがあるデータを読み込もうとしたからではないでしょうか。
提示のエラーメッセージとサンプルのファイルが異なる気がするので、確実ではありませんが。

投稿2019/07/05 00:20

tetsunosuke

総合スコア1295

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

comyan

2019/07/05 12:48

ご回答ありがとうございます。 skiprowsでご指摘の部分を飛ばしたところ問題なく取り込むことができました。 重ねてのご相談で申し訳ないのですが、今回のケースの場合、問題の部分(一番最初の、データ部分と区切りが異なる部分)のデータも取り込みたい場合は、別に取り込むしかないのでしょうか?
tetsunosuke

2019/07/05 16:14

取り込んだあとのイメージがちょっと想像できませんでした。 データの部分をデータフレームにするという意味では別々に読む必要はあると思いますが、どういう用途になるのか記載していただければアドバイスできるかもしれないです
comyan

2019/07/06 02:05 編集

材料の物性を測定した際の生データを自動で処理(整形、エクセル化、蓄積など)することを想定しています。 今回のデータには記載がありませんが、例えば区切りが異なる部分に測定時の条件(温度、湿度、サンプルの形状など)などが入ったデータを扱う場合もあると思い、質問させていただきました。
tetsunosuke

2019/07/06 03:47

やはりそれはデータフレームとは異なるデータなので、 そのファイルのメタ情報としてファイルと関係する情報として扱うべきでしょうね つまり、 まずはデータフレームのヘッダー情報の(ご提示のサンプルであればLOG(freq~)の行)行番号を取得し、そこまでのデータを別途変数に入れ、 skiprowsを使いデータフレームを読むということです
comyan

2019/07/07 05:19

わかりやすく丁寧にご回答、痛み入ります。 別形式のデータが得られたら早速運用してみようと思います。 貴重なお時間いただき、ありがとうございます。大変助かりました。
tetsunosuke

2019/07/07 09:10

では、回答を解決済みにしておいてください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問