我有一个变量,包含一个城市,或城市加标点符号,然后邮政编码。我正在使用语句删除标点(和其他杂散)字符。看起来像这样:
for c in "!@#%&*()[]{}/?<>,.":
jobLocationCleaned = string.replace(jobLocationUnclean, c, "")
jobLocation = jobLocationCleaned
# Add to list
params.append(jobLocation)
print(jobLocation)
但是,当使用Debug时,我可以看到代码逐步执行并完成它应该做的工作,但是当它涉及到print
语句时,它会在清除之前打印地址,即for
循环没有任何效果。在
为什么会这样?在
您应该为此使用
regex
:修复代码:
^{pr2}$为什么你的代码失败了?在
在您的代码中,您循环使用这些标点,并指定 将
jobLocationUnclean
的值替换为jobLocationCleaned
,不过请注意 字符串在python中是不可变的,因此replace(jobLocationUnclean, c, "")
操作根本不会更改原始的jobLocationUnclean
。因此,在每次迭代中,您都会替换一个给定的标点符号,并将新字符串赋给jobLocationCleaned
。 对字符串的任何操作都会返回一个新字符串。在最后,代码实际上只替换了字符串(
jobLocationUnclean
)中的.
字符,并将其赋给jobLocationCleaned
。在在每次迭代中,您对
jobLocationUnclean
执行替换,但将结果赋给jobLocationClean
。由于每次迭代都使用相同的不干净的起点,因此只有最后一次迭代才会对结果产生任何影响。尝试将代码更改为以下内容:注意,我还做了另外两个小的修改,我只使用了},因为这是不必要的,而不是{},我使用了
jobLocation
并去掉了{jobLocation.replace(c, "")
。这是直接在对象上而不是从字符串模块调用字符串函数的推荐方法。在在循环中,您永远不会使用上一次迭代的结果,而是使用原始字符串。这是你问题的根源。在
相关问题 更多 >
编程相关推荐