我有一个像这样的字符串:
text = The Black Cat is running
,我想将文本拆分为单词,并为每个单词创建一个变量,而无需手动设置。 像这样的东西:
one="The"
two="black"
three="Cat"
four="is"
five="running"
,但是如果存在一个包含更多或更少单词的不同字符串,则会根据单词数量创建一定数量的变量;例如,如果有七个单词,它将创建七个变量。
答案 0 :(得分:2)
您可以拥有一个字典,并为text
中的每个值动态创建变量:
因此,您不必担心较大的字符串。它将根据其长度创建n
个变量。
In [2355]: d = {}
In [2357]: for c,i in enumerate(text.split()):
...: d['var{}'.format(c)] = i
...:
...:
In [2358]: d
Out[2358]:
{'var0': 'The',
'var1': 'Black',
'var2': 'Cat',
'var3': 'is',
'var4': 'running'}
然后,您可以如下访问字典:
In [2362]: for key in d.keys():
...: print(key,d[key])
...:
('var4', 'running')
('var1', 'Black')
('var0', 'The')
('var3', 'is')
('var2', 'Cat')
答案 1 :(得分:1)
只需解压缩值,例如:
text = "The Black Cat is running"
one, two, three, four, five, *_ = l = text.split()
for n in l:
print(n)
请注意使用*_
的情况,以防产生的拆分词多于所需的词数。万一它少了,它将永远失败。
这里有live example
答案 2 :(得分:0)
假设我们有这个字符串
str = "The Black Cat is running"
然后我们需要将其拆分为字符串的所有数组元素,如下所示:
str_arr = str.split(" ")
str_arr = ['The', 'Black', 'Cat', 'is', 'running']
要保留动态变量的值,可以使用哈希:
mydict = {}
然后我们需要迭代数组并将元素分配给唯一变量,如下所示:
for index in range(len(str_arr)):
mydict["var_%d" %index] = str_arr[index]
print "var_%d : " %index + str_arr[index]
其输出为:
var_0 : The
var_1 : Black
var_2 : Cat
var_3 : is
var_4 : running
要打印哈希,我们可以写:
print mydict
{'var_0': 'The', 'var_1': 'Black', 'var_2': 'Cat', 'var_3': 'is', 'var_4': 'running'}
希望,这将为您编写下一个逻辑提供一些提示。
答案 3 :(得分:0)
我把这看成两个不同的问题。
您可以使用.split()
方法非常简单地执行字符串操作。如上文所述
text = "The Black Cat is running"
one, two, three, four, five, *_ = l = text.split()
您可以采用的一种方法是,首先按照单词的字母数对单词进行排序,然后将它们分配给适当的变量。例如
def count_letters_in_each_word(text):
word_counts = {len(word): word for word in text.split(' ')}
max_length = max(word_counts.keys())
return [word_counts.get(cnt) for cnt in range(1, max_length+1)]
text = 'The Black cat is flopping around'
one, two, three, four, five, six, seven, eight = count_letters_in_each_word(text)
print(one)
> None
print(five)
> "Black"
print(seven)
> None
print(eight)
> "flopping"
# or, if you only want short words
one, two, *_ = count_letters_in_each_word(text)
答案 4 :(得分:0)
解决此问题的最佳方法是改用list
中的dict
。但是由于某些原因,如果您要创建变量(如前所述),则可能会有所帮助
text = "The Black Cat is running "
text=text.strip().split(" ")
for i,j in enumerate(text,1):
locals()['var'+str(i)]=j # create variable as var1='The' and so on in local scope
尝试访问变量
print(var1,var2,var3,var4,var5)
输出
('The', 'Black', 'Cat', 'is', 'running')