为什么这会分裂这两个元素?

时间:2015-11-01 19:22:42

标签: python python-3.x

new_list =[]
fieldscopy = ['donkey   donkey2    donkey3']
print(fieldscopy)
for i in fieldscopy:
    new_list.append(i.rsplit(   )[0])
print(new_list)

输出

  ['donkey']

而不是

 ['donkey', 'donkey2', 'donkey3]

关于我获得后者结果的简单方法的任何想法,而不仅仅是第一个元素。假设在空格(/ t)处分开但不是出于某种原因。

3 个答案:

答案 0 :(得分:2)

通过使用[0],您只选择拆分的第一个元素。如果您想要所有元素,只需获取split本身的结果即可。这是一种方式:

new_list = []
fieldscopy = ['donkey   donkey2    donkey3']
print(fieldscopy)
for i in fieldscopy:
    new_list.extend(i.rsplit())
print(new_list)

您的代码还有许多其他可疑功能。如果它只有一个元素,为什么要迭代fieldscopy?您是否在rsplit( )的括号中放置了多个空格,以为它会在多个空格中分割? (它赢了。)为什么你使用rsplit而不是split呢?我建议你阅读Python tutorial以及你正在调用的函数的文档。

答案 1 :(得分:1)

import re
new_list =[]
fieldscopy = ['donkey   donkey2    donkey3']
new_list = re.findall(r'(\w+)',fieldscopy[0])
print(new_list)
['donkey', 'donkey2', 'donkey3']

答案 2 :(得分:0)

你的逻辑错了。您正在遍历fieldscopy中的所有元素(正好是1个字符串)。然后将第一个单词添加到新列表中,这会产生“驴”

正确的是:

for i in fieldscopy.split( "    "):
    newlist.append(i)

然而,这是不必要的。你可以这样做:

newlist = fieldscopy.split("    ")