我有一个变量,其中包含城市或城市,加上标点符号,然后包含邮政编码。我正在使用一条语句删除标点符号(和其他杂散字符)。看起来像这样:

for c in "!@#%&*()[]{}/?<>,.":
    jobLocationCleaned = string.replace(jobLocationUnclean, c, "")
jobLocation = jobLocationCleaned

# Add to list
params.append(jobLocation)
print(jobLocation)


但是,当使用Debug时,我可以看到代码逐步执行并完成应该执行的工作,当涉及到print语句时,它会在清除之前打印地址,即for循环无效。

为什么是这样?

最佳答案

在每次迭代中,您都在jobLocationUnclean上进行替换,但将结果分配给jobLocationClean。由于您在每次迭代中使用相同的不干净起始点,因此只有最后一次迭代才会对结果产生任何影响。尝试将代码更改为以下内容:

jobLocation = jobLocationUnclean
for c in "!@#%&*()[]{}/?<>,.":
    jobLocation = jobLocation.replace(c, "")

params.append(jobLocation)
print(jobLocation)


请注意,我还做了另外两个较小的修改,我只使用jobLocation并删除了jobLocationClean,因为它是不必要的,并且我使用了string.replace(jobLocation, c, "")代替了jobLocation.replace(c, "")。建议使用此方法直接在对象上而不是从字符串模块调用字符串函数。

09-20 10:35