Python:如何根据字符串中单词的数量将字符串拆分为变量?

时间:2018-12-11 14:34:32

标签: python python-3.x

我有一个像这样的字符串:

text = The Black Cat is running 

,我想将文本拆分为单词,并为每个单词创建一个变量,而无需手动设置。 像这样的东西:

one="The"
two="black"
three="Cat"
four="is"
five="running"

,但是如果存在一个包含更多或更少单词的不同字符串,则会根据单词数量创建一定数量的变量;例如,如果有七个单词,它将创建七个变量。

5 个答案:

答案 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)

我把这看成两个不同的问题。

1。将字符串中的每个单词拆分为一个单独的变量

您可以使用.split()方法非常简单地执行字符串操作。如上文所述

text = "The Black Cat is running"
one, two, three, four, five, *_ = l = text.split()

2。计算每个单词的字母

您可以采用的一种方法是,首先按照单词的字母数对单词进行排序,然后将它们分配给适当的变量。例如

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')