从拆分字符串动态创建变量

时间:2018-05-15 19:22:12

标签: python regex string variables split

我想要做的是分隔字符串的每个单词并动态创建我之后可以独立使用的变量,例如:

String = 'Jurassic Park 3'
Variable1= 'jurassic'
Variable2= 'park'
Variable3= '3'
事实是,字符串可能很长。所以它必须能够处理包含许多单词的句子。

我已经有了代码的开头:

import re
input = str(d["input_text"])

l = []
regex = re.compile(r'(\d+|\s+)')

s = regex.split(input)
l = []
for elem in s: 
    if elem =='':
        continue
    else:
        l.append(elem)

ret_dict = {}
ret_dict["text_list"] = l
ret_dict["returncode"] = 0 # set to 1 to output on the FAILURE output
return ret_dict

使用该代码,目前我有这个

input variable = input_text
output variable = text_list

我想

input variable = input_text
output variable1 = variable1
output variable2 = variable2
output variable3 = variable3
output variable4 = variable4

3 个答案:

答案 0 :(得分:0)

首先,您可以将字符串拆分为此列表

string = "Jurassic Park 3"
string_list = string.split()

打印这将输出:

['Jurassic', 'Park', '3']

然后我们通过这样的列表进行迭代

for i in range(0, len(string_list)):
    exec("word%d = %s" % (i + 1, repr(string_list[i])));

这样做是通过单词列表进行的,并将所有内容放在变量word1 word2 word3中,不管您的字符串是多长时间。

希望这有帮助

答案 1 :(得分:0)

当必须定义未知数量的变量时,我喜欢使用词典。可以这样做:

string = 'Jurassic Park 3'            # Original string
string_list = string.split()          # Returns: ['Jurassic', 'Park', '3']

dic = {}                              
for i in range(len(string_list)):
   var_name = 'Variable{}'.format(i+1)   # Define name of variable, start with 'Variable1'
   dic[var_name] = string_list[i]     # Insert variable name as key and list entry as value

打印字典将返回:

{'Variable1': 'Jurassic', 'Variable2': 'Park', 'Variable3': '3'}

访问例如Variable2,你可以这样做:

dic['Variable2']

返回

'Park'

如果变量的数量变大,我认为将它们收集在字典中可能更容易处理,而不是像你的问题建议那样单独定义变量。

如果你有例如100个变量但不确定计数,很容易检查字典的大小。如果将这些变量分散在一起并且没有被收集起来,那么跟踪所有这些变量可能会有点困难。

答案 2 :(得分:0)

我发现了别的东西,它确实有效。我只需要再做一件事。如果列表的元素是' space',请将其添加到下一个元素的开头。

import re
input = str(d["Jurassic Park 3"])

l = []
regex = re.compile(r'(\d+|\s+)')

s = regex.split(input)
l = []
for elem in s: 
    if elem =='':
        continue
    else:
        l.append(elem)

ret_dict = {}
ret_dict["text_list"] = l
ret_dict["returncode"] = 0 # set to 1 to output on the FAILURE output
return ret_dict

这确实让我回答:

["Jurassic"," ","Park"," ","3"]

我希望:

["Jurassic"," Park"," 3"]