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

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

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

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

Q&A

解決済

4回答

3506閲覧

リスト内のアポストロフィの削除方法

shunsuke1937

総合スコア48

Python

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

0グッド

0クリップ

投稿2020/11/16 12:45

編集2020/11/16 12:46

リストのアポストロフィを削除する方法

以下のようなリストがあります。
その際に、''で大括弧は囲まれているため、一括りの文字列?として認識されてしまい、
多重リストとしては認識してくれません。

python

1List=['[2,4.8]', 2 '[4,2.7]', 3 '[5,10.5]', 4 '[6,25.6]', 5 '[3,4,6.9]']

出したい結果

アポストロフィを削除して、多重リストとしたい。

python

1List=[[2,4.8], 2 [4,2.7], 3 [5,10.5], 4 [6,25.6], 5 [3,4,6.9]]

試したこと

以下の方法で先頭のアポストロフィを空の文字列に置き換える以下の2パターンを試しました。

python

1#①一重引用符をバックスラッシュで囲む方法 2List = [i.replace('\','')for i in List ] 3#②二重引用符で囲む方法 4List = [i.replace("'",'')for in in list]

①\以降が一括りの文字列として認識されてしまい、SyntaxErrorが出てくる
②二重引用符を用いることで、'は認識されるが、置き換わらない。

リスト内のアポストロフィの削除方法をご教示のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答4

0

Pythonのリテラルとして解釈可能な文字列をパーズするなら、ast.literal_eval も。
https://docs.python.org/ja/3/library/ast.html#ast.literal_eval

投稿2020/11/17 00:19

quickquip

総合スコア11040

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

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

0

python

1[[float(i) if float(i) % 1 else int(i) for i in j[1:-1].split(',') ] for j in List] 2# [[2, 4.8], [4, 2.7], [5, 10.5], [6, 25.6], [3, 4, 6.9]]

投稿2020/11/16 13:07

meg_

総合スコア10583

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

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

0

具体的なやり方の良い回答が付いているので、補足ですが、
「アポストロフィの削除」という発想が間違っています。

あなたのやりたいことは、「文字列をそれが表現するオブジェクトに変換する」です。
'1'という文字列を整数値の1に変換したければ、int('1')というのは多分分かると思いますが、それの延長です。

ちなみに、int('1')じゃなくて、回答で使われているjson.loads('1')でも整数値に変換されます。

投稿2020/11/16 13:03

otn

総合スコア84576

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

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

0

ベストアンサー

JSONとして処理するのが簡単でよいでしょう。

Python

1import json 2 3List=['[2,4.8]', 4 '[4,2.7]', 5 '[5,10.5]', 6 '[6,25.6]', 7 '[3,4,6.9]'] 8 9ret = [json.loads(s) for s in List] 10print(ret) # [[2, 4.8], [4, 2.7], [5, 10.5], [6, 25.6], [3, 4, 6.9]]

投稿2020/11/16 12:51

can110

総合スコア38266

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

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

shunsuke1937

2020/11/16 12:58

早々のご回答ありがとうございました。 一瞬で解決することができました! 初めて聞くライブラリなので、使い方も含め確認したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問