替换for循环Python中的字符串元素

时间:2016-09-25 00:43:45

标签: python python-2.7

我正在从文本文件中读取数据,因此每行都是字符串列表,所有这些列表都在数据列表中。所以我的列表看起来像:

data = [row1, row2, etc.]
row1 = [str1, str2, etc.]

我正在尝试删除行列表中字符串中出现的任何$或%符号。我已经检查过,如果我尝试为一个单独的元素执行此操作,请说第二行,第四个元素有一个“%”,所以:

data[1][3] = data[1][3].replace("%","")

这将正确删除它,但当我尝试使用嵌套的for循环来完成所有操作时:

for row in data:
    for x in row:
        x = x.replace("%","")
        x = x.replace("$","")

这不会删除任何%或$符号,我已经尝试过这样做而没有第二次替换,看看它是否至少会删除%符号,但即使这样也行不通。

任何想法为什么这不起作用,或我怎么能这样做?
在此先感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

问题是您的 str 变量正在隐藏内置Python str变量。这个修复很简单。只需使用另一个变量名称。

第二个问题是被替换的字符串不会在行列表中被替换。修复方法是将替换的字符串保存回列表。为此,您可以使用enumerate()为您提供值及其在行中的位置:

for row in data:
    for i, x in enumerate(row):
        x = x.replace("%","")
        x = x.replace("$","")
        row[i] = x

答案 1 :(得分:0)

您要为名称x分配新值,但这不会更改rowdata的内容。更改x后,您需要为相应的列索引row[j] = x(以及行索引data[i][j] = x)分配ji。另请参阅python 3: lists dont change their values

答案 2 :(得分:0)

在这种情况下你也可以使用列表理解

data = [[item.replace("%", "").replace("$", "0") for item in row] for row in data]