想象一下,你有100个随机数字的字符串,类似的东西:
str1="123"
str2="456"
str3="287"
strN="..."
我想准确显示哪个字符串包含数字" 2"。
例如输出将是:
"Digit 2 is in str1 str3"
对于str range = 4:
str1 = "123"
str2 = "456"
str3 = "728"
start = 0
list = []
while start < 4:
b = "str%d" %start
list.append(b)
start+=1
# List is ['str0', 'str1', 'str2', 'str3']
for i in list:
if "2" in i:
print i
我想知道如何从列表中分配元素,例如"str1"
作为变量str1
,内容为"123"
。
答案 0 :(得分:2)
search_value = '2'
str1 = "123"
str2 = "456"
str3 = "728"
start = 1
list = []
while start < 4:
b = "str%d" % start
list.append(b)
start += 1
for value_name in list:
if search_value in eval(value_name):
print "{0} is in {1}".format(search_value, value_name)
输出:
2 is in str1
2 is in str3
此处使用eval
。在大多数情况下,不应该使用它,因为它很危险。此外,如果您需要通过名称访问变量,那么最好更改代码策略。
此外,list
不是变量的好名称,因为list
是内置的python函数。
所以,你最好把字符串放在dict中并更改一些变量名。
strings = {
"str1": "123",
"str2": "456",
"str3": "728",
}
search_value = '2'
for s_name in sorted(strings):
if search_value in strings[s_name]:
print "{0} is in {1}".format(search_value, s_name)
如您所见,它更紧凑,更易读。输出将是相同的。
答案 1 :(得分:1)
一种方式可能是这样的:
data = {'str1': str1, 'str2': str2, 'str3': str3}
dict = {key: value for (key, value) in data.iteritems() if '2' in value}
然后你列出你的strn变量及其正确的内容。
您可以使用
按名称访问变量globals()['str1'] <==> globals()[dict.keys()[0]]