我正在从文本文件中读取数据,因此每行都是字符串列表,所有这些列表都在数据列表中。所以我的列表看起来像:
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("$","")
这不会删除任何%或$符号,我已经尝试过这样做而没有第二次替换,看看它是否至少会删除%符号,但即使这样也行不通。
任何想法为什么这不起作用,或我怎么能这样做?
在此先感谢您的帮助!
答案 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
分配新值,但这不会更改row
或data
的内容。更改x
后,您需要为相应的列索引row[j] = x
(以及行索引data[i][j] = x
)分配j
或i
。另请参阅python 3: lists dont change their values
答案 2 :(得分:0)
在这种情况下你也可以使用列表理解
data = [[item.replace("%", "").replace("$", "0") for item in row] for row in data]