0

次のデータ リストでパーセント記号を削除しようとしています。このようにして、すべての数値を浮動小数点数に変更できます。私はいくつかの異なるオプションstring.strip()などを試しました.しかし、私は固執する方法を見つけることができないようです. これは、文字列が不変であるという事実に関係していると思いますが、よくわかりません。

%私の質問は、次のリストから記号を削除するにはどうすればよいですか?

[['5.71666666667', '2.08%', '11.03%', '13.89%'], ['5.7', '1.36%', '3.04%', '3.90%'], ['5.48333333333', '1.49%', '2.30%', '2.60%']]
4

3 に答える 3

5

文字列は不変であるため、変更された文字列で新しいリストを作成するだけです

たとえば、リストがデータ変数に格納されている場合:

data = [['5.71666666667', '2.08%', '11.03%', '13.89%'],
        ['5.7', '1.36%', '3.04%', '3.90%'],
        ['5.48333333333', '1.49%', '2.30%', '2.60%']]

各要素を削除できます

data = [[i.strip('%') for i in j] for j in data]

またはパーセント記号を空の文字列に置き換えます

data = [[i.replace('%', '') for i in j] for j in data]

しかし、インスタンスタイプを確認する必要があります リストには文字列以外のものを含めることができます それ以外の場合はAttributeError

data = [[i.replace('%', '') if isinstance(i, basestring) else i 
                                      for i in j] for j in data]

新しいリストを作成することはできませんが、既存のリストを反復して変更することはできません。

for sublist in data:
    for i, val in enumerate(sublist):
        if isinstance(v, basestring):
            sublist[i] = v.strip('%')
于 2013-09-20T21:54:29.953 に答える
0
data = [[float(j.strip('%')) for j in i] for i in data]

このコードは、メイン リストのすべてのリストを反復処理し、次にこれらの埋め込みリストのすべての文字列を反復処理します。そして、これらの文字列のそれぞれについて、次のように置き換えます。

float(j.strip('%'))

j各文字列はどこにありますか。

于 2013-09-20T23:14:55.423 に答える