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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

2092閲覧

pythonで、[]のついた文字列を縦表示にしたい

nmtk

総合スコア1

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/03 16:13

前提・実現したいこと

[]と,のついた数字の文字列を、数字だけの表示にして縦に並べたい

発生している問題・エラーメッセージ

[[1,10,100], [2,20,200], [3,30,300]]
[[4,40,400], [5,50,500], [6,60,600]]
[[7,70,700], [8,80,800], [9,90,900]]

のような形で表示されている数字の文字列を

1 10 100
2 20 200
3 30 300
4 40 400
5 50 500
6 60 600
7 70 700
8 80 800
9 90 900

のように、縦に数字だけ並べて表示する方法を教えて頂きたいです。

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

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

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

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

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

guest

回答3

0

入力は文字列なのですね。
以下のように表示すればできます。

python

1>>> data = '''[[1,10,100], [2,20,200], [3,30,300]] 2... [[4,40,400], [5,50,500], [6,60,600]] 3... [[7,70,700], [8,80,800], [9,90,900]]''' 4>>> 5>>> print(data) 6[[1,10,100], [2,20,200], [3,30,300]] 7[[4,40,400], [5,50,500], [6,60,600]] 8[[7,70,700], [8,80,800], [9,90,900]] 9>>> 10>>> import ast 11>>> all_data = [ast.literal_eval(line) for line in data.split('\n')] 12>>> for line in all_data: 13... for element in line: 14... print(f'{element[0]} {element[1]} {element[2]}') 15... 161 10 100 172 20 200 183 30 300 194 40 400 205 50 500 216 60 600 227 70 700 238 80 800 249 90 900

投稿2021/06/03 16:38

ppaul

総合スコア24670

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

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

nmtk

2021/06/03 17:06

ありがとうございます。 入力は文字列でよいのですが、実際は [[1,10,100], [2,20,200], [3,30,300]] の形が20列ぐらい続いているので、列が多い場合でも表示できる方法があれば知りたいです。
udon-ken

2021/06/03 17:22

データが同じ形式で並んでるのであれば、100行だろうが1万行だろうが表示できますよ。
退会済みユーザー

退会済みユーザー

2021/06/04 21:55 編集

横から失礼します。 astをいきなり使うので高評価どうしようか迷ったのですが、他にいいのがなかったのでこちらに入れました。以下ついでです。 列なのでudon-kenさんのは勘違いだと思いますが、 pythonの各型の標準的な文字列表現を元のオブジェクトに戻す方法です。 https://docs.python.org/ja/3/library/ast.html#ast.literal_eval なので、elementには各数字のリストが入ってきます。 print()は引数endで改行をしない設定も出来るので、1列ずつ表示して別途自分で空白を入れるか ' '.join(str(x) for x in [1,2,3]) みたいな感じでjoinするといいでしょう。
guest

0

Python

1import re 2 3s = '''[[1,10,100], [2,20,200], [3,30,300]] 4[[4,40,400], [5,50,500], [6,60,600]] 5[[7,70,700], [8,80,800], [9,90,900]]''' 6 7print(re.sub(r'[|]| ', '', s.replace('],', '\n')).replace(',', ' '))

追記
正規表現を使わずに済ますなら、

Python

1s = '''[[1,10,100], [2,20,200], [3,30,300]] 2[[4,40,400], [5,50,500], [6,60,600]] 3[[7,70,700], [8,80,800], [9,90,900]]''' 4 5print(s.replace('], ', '\n').replace('[', '').replace(']', '').replace(',', ' '))

投稿2021/06/04 16:40

編集2021/06/04 17:26
kazuma-s

総合スコア8224

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

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

0

ベストアンサー

Python

1s=""" 2[[1,10,100], [2,20,200], [3,30,300]] 3[[4,40,400], [5,50,500], [6,60,600]] 4[[7,70,700], [8,80,800], [9,90,900]] 5""" 6import re 7for a in re.findall(r'\d+,\d+,\d+',s): 8 print('{0} {1} {2}'.format(*a.split(',')))

とか

投稿2021/06/03 17:55

編集2021/06/04 15:33
modieu

総合スコア282

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問