我的问题是 How do I pass a variable by reference? 的细微变化- 但是我仍然找不到解决下面问题的简单解决方案:如何从 for 循环中更改外部字符串变量的值?
str1 = 'before'
str2 = 'before'
for i in str1,str2:
print "%s" % (i)
i = "after"
for i in str1,str2:
print "%s" % (i)
感谢下面的有用回复,但是它们并没有真正帮助解决我的具体问题,下面的代码不太通用,但更好地反射(reflect)了我的用例:
import feedparser
d = feedparser.parse('http://feeds.feedburner.com/FrontlineAudiocastPbs?format=xml')
name = d.feed.title[:127]
description = d.feed.subtitle[:255]
strs = [name,description]
for i, s in enumerate(strs):
try:
strs[i] = unicode(strs[i])
except:
strs[i] = "Invalid unicode detected!"
for s in name,description:
print s
可以看到原来的两个字符串变量没有更新。 for 循环旨在检测和处理格式错误的字符串,例如对“描述”的赋值。因此,我们将不胜感激任何“相关”建议。
我喜欢下面的列表理解切片分配方法的优雅,并且理想情况下会使用该技术。
请您参考如下方法:
创建一个字符串列表,而不是将它们作为单独的变量处理,然后您可以使用 enumerate 遍历它们:
strs = ['before', 'before']
for i, s in enumerate(strs):
print s
strs[i] = "after"
print strs
