質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

2回答

1897閲覧

[次元配列]csvファイル各行ごとに,をつけない!!

heisei_no_saigo

総合スコア29

Python 3.x

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

1グッド

1クリップ

投稿2019/01/28 17:27

編集2019/01/29 07:10
if __name__=="__main__": temp = dict() for file in sorted(glob.glob("a/*.csv")): temp[file] = [] with open(file, 'r') as f: #ファイルを読み取りモードで開く for line in f.read().splitlines(): line_data_arr = [s for s in line.split(",") if s != ""] if len(line_data_arr) == 4: #print(line_data_arr) temp[file].append(line_data_arr) for file, S in temp.items(): #print("{} :\n{}\n".format(file, S)) #print(S) #print([ [ [e] for e in x ] for x in itertools.chain.from_iterable( temp.values() ) ]) S=[ [[e] for e in x ] for x in itertools.chain.from_iterable( temp.values() ) ] print(S)

ここで2次元配列の中身を出力するとこまでできてます

csvファイルの中身はこちら
[['10','100','1000','10000'],['11','101','1001','10001']]
[['12','102','1002','10002']]
[['13','103','1003','10003'],['14','104','1004','10004']]
ですがこう出力させたいんです
[[['10'],['100'],['1000'],['10000']]
[['11'],['101'],['1001'],['10001']]]
[[['12'],['102'],['1002'],['10002']]]
[[['13'],['103'],['1003'],['10003']]
[['14'],['104'],['1004'],['10004']]]
cavファイル各行ごとに,をつけないようにしたい
とさせたいんです
どなたか力を貸してください!

bochan2👍を押しています

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

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

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

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

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

y_waiwai

2019/01/28 23:59

どういう出力になったらいいのか具体例を提示しましょう #またおまえか案件
Lhankor_Mhy

2019/01/29 07:07

if len(line_data_arr) == 7: が辞書に追加する条件になってますから、そのcsvファイルを処理しても何も出力されないですよ。
heisei_no_saigo

2019/01/29 07:11

@Lhankor_Mhy 様 質問コード書き換えました。 これで2次元配列の中身を出力するとこまでできてます。 回答お願いします。
heisei_no_saigo

2019/01/29 07:57

私は下から2行目のS=S=[ [[e] for e in x ] for x in itertools.chain.from_iterable( temp.values() ) ]の下に追加しました。
mather

2019/01/30 02:58

マイナス評価ロンダリングお疲れ様です
heisei_no_saigo

2019/01/30 03:00

何が ? もうプログラム解決したから
guest

回答2

0

出力をそれにあわせるならこんな感じですけど、たぶん質問者はなんか勘違いしてますよ。
まず、CSVファイルの仕様から間違って理解してるんじゃないかと思う。

python

1 for x in temp.values(): 2 print( '[', end="" ) 3 print( *[ [e] for e in x ], sep="\n", end="" ) 4 print( ']', end="\n" )

投稿2019/01/29 07:24

Lhankor_Mhy

総合スコア36074

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

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

heisei_no_saigo

2019/01/29 07:27

print( '[', end="" ) ^ SyntaxError: invalid syntax はどうすれば?
Lhankor_Mhy

2019/01/29 07:31

はて、こっちではエラー出ないですね。
heisei_no_saigo

2019/01/29 07:58

私は下から2行目のS=S=[ [[e] for e in x ] for x in itertools.chain.from_iterable( temp.values() ) ]の下に for x in temp.values(): print( '[', end="" ) print( *[ [e] for e in x ], sep="\n", end="" ) print( ']', end="\n" )を 追加しました。
Lhankor_Mhy

2019/01/29 08:08

それでよろしいんじゃないですか?
heisei_no_saigo

2019/01/29 08:12

やっぱり同じエラーが出てしまいました。endのあたりがおかしいんですかね?
Lhankor_Mhy

2019/01/29 08:14

全角スペースが混じっているとか?
heisei_no_saigo

2019/01/29 08:23

いや!そのままコピペさせていただきました。
Lhankor_Mhy

2019/01/29 09:13

ちょっとわかりかねますね。がんばってみてください。
Lhankor_Mhy

2019/01/29 09:53

現物のコードを見てみないとなんとも。
t_obara

2019/02/01 01:18

コード的にインデントがないとか
heisei_no_saigo

2019/02/02 00:40

大丈夫でした! 解決しました!
guest

0

==> test.py <== import csv import glob import json for filename in sorted(glob.glob('a/*.csv')): with open(filename, 'r') as f: data = [[[x] for x in row] for row in csv.reader(f)] s = json.dumps(data) print(s.replace(']], [[', ']]\n[[')) ==> a/1.csv <== 10,100,1000,10000 11,101,1001,10001 ==> a/2.csv <== 12,102,1002,10002 ==> a/3.csv <== 13,103,1003,10003 14,104,1004,10004

投稿2019/01/31 02:55

mather

総合スコア6753

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問