查找和替换百分号 - Python

clo*_*d36 0 python string list python-2.7

我正在尝试删除以下数据列表中的百分号.这样我可以将所有数字更改为浮点数.我已经尝试了几个不同的选项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%']]
Run Code Online (Sandbox Code Playgroud)

提前致谢.

ole*_*leg 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%']]
Run Code Online (Sandbox Code Playgroud)

您可以删除每个元素

data = [[i.strip('%') for i in j] for j in data]
Run Code Online (Sandbox Code Playgroud)

或用空字符串替换百分号

data = [[i.replace('%', '') for i in j] for j in data]
Run Code Online (Sandbox Code Playgroud)

但你应该检查实例类型是列表可以包含除字符串之外的任何内容,否则你得到 AttributeError

data = [[i.replace('%', '') if isinstance(i, basestring) else i 
                                      for i in j] for j in data]
Run Code Online (Sandbox Code Playgroud)

您不能创建新列表但迭代现有列表并修改它们:

for sublist in data:
    for i, val in enumerate(sublist):
        if isinstance(v, basestring):
            sublist[i] = v.strip('%')
Run Code Online (Sandbox Code Playgroud)