我有一个变量,其中包含城市或城市,加上标点符号,然后包含邮政编码。我正在使用一条语句删除标点符号(和其他杂散字符)。看起来像这样:
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, "")
。建议使用此方法直接在对象上而不是从字符串模块调用字符串函数。