多次分割输入?

时间:2013-11-06 22:34:50

标签: python input python-3.x

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

Shawn=14:soccer#2991842

我想做什么:

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

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

6 个答案:

答案 0 :(得分: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'}

答案 1 :(得分:2)

我认为Regex在这里效果最好:

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

答案 2 :(得分:1)

如果您可以将它们存储在字典键下,则可以使用named group references

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

答案 3 :(得分:1)

您可以做的另一件事是使用分割:string.split(":")。 然后您可以将格式更改为“name:age:course:number”

答案 4 :(得分: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始终具有相同的分隔符,它就会起作用。

答案 5 :(得分: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)