0

我知道您可以使用 split() 将用户输入拆分为两个,但是您将如何拆分包含多个变量的输入?例如:用户输入:

Shawn=14:soccer#2991842

我想做的事:

name = Shawn
age = 14
course = soccer
idnumber = 2991842

做这种事情的最好方法是什么?

4

6 回答 6

3
str = 'Shawn=14:soccer#2991842'

keys = ['name', 'age', 'course', 'idnumber']
values = re.split('[=:#]', str)

print dict(zip(keys, values))
Out[114]: {'age': '14', 'course': 'soccer', 'idnumber': '2991842', 'name': 'Shawn'}
于 2013-11-06T22:47:39.740 回答
2

我认为正则表达式在这里效果最好:

>>> from re import split
>>> mystr = "Shawn=14:soccer#2991842"
>>> split("\W", mystr)
['Shawn', '14', 'soccer', '2991842']
>>> lst = split("\W", mystr)
>>> name = lst[0]
>>> name
'Shawn'
>>> age = lst[1]
>>> age
'14'
>>> course = lst[2]
>>> course
'soccer'
>>> idnumber = lst[3]
>>> idnumber
'2991842'
>>>

另外,以上是一步一步的演示。你实际上可以这样做:

name, age, course, idnumber = split("\W", mystr)
于 2013-11-06T22:40:17.747 回答
1

如果您可以将它们存储在字典键下,则可以使用命名组引用

import re
x='shawn=14:soccer#2991842'
re.match(r'(?P<name>.*?)=(?P<age>.*):(?P<course>.*?)#(?P<idnumber>.*)', x).groupdict()
{'idnumber': '2991842', 'course': 'soccer', 'age': '14', 'name': 'shawn
于 2013-11-06T22:42:05.473 回答
1

您可以做的另一件事是使用拆分,例如:string.split(":"). 然后您可以将格式更改为“姓名:年龄:课程:编号”

于 2013-11-06T22:53:49.513 回答
0

你可以继续分裂...

text2split = "Shawn=14:soccer#2991842"
name = text2split.split('=')[0]
age = text2split.split('=')[1].split(':')[0]
course = text2split.split('=')[1].split(':')[1].split('#')[0]
idnumber = text2split.split('=')[1].split(':')[1].split('#')[1]

这不是最优雅的方法,但只要text2split始终具有相同的分隔符,它就可以工作。

于 2013-11-06T22:38:51.170 回答
0

这就是我将如何做到的。

def splitStr(str):
   temp = str.split(':')

   temp_nameAge = temp[0].split('=')
   temp_courseId = temp[1].split('#')

   name = temp_nameAge[0]
   age = int(temp_nameAge[1])
   course = temp_courseId[0]
   idnumber = int(temp_courseId[1])

   print 'Name = %s, age = %i, course = %s, id_number = %i' % (name, age, course, idnumber)
于 2013-11-06T22:43:16.583 回答