2016-07-23 67 views
0

大家好我不知道你是否可以幫助我的問題。Python多個字符串到元組

我正在定義一個函數,它接受一個字符串並將其轉換爲元組中的5個項目。該功能將需要採取一些字符串,其中一些項目的長度會有所不同。我怎麼會這樣做,因爲使用字符串的索引不適用於每個字符串。

舉個例子 - 我想一個字符串轉換像

如下:

Doctor E212 40000 Peter David Jones 

元組字符串的項目將是:

Job(Doctor), Department(E212), Pay(40000), Other names (Peter David), Surname (Jones) 

但是某些字符串有2個其他名稱,其他人將只有1個。

我該怎麼辦?當其他名稱可以在1和2之間變化時,將這樣的字符串轉換爲元組?

我有點新手,當涉及到Python,你可能會說;)

+2

*你會怎麼做,並以什麼方式不起作用? –

回答

4

使用Python 3,你可以split()並使用"catch-all" tuple unpacking*

>>> string = "Doctor E212 40000 Peter David Jones" 
>>> job, dep, sal, *other, names = string.split() 
>>> job, dep, sal, " ".join(other), names 
('Doctor', 'E212', '40000', 'Peter David', 'Jones') 

另外,你可以使用regular expressions,例如這樣的事情:

>>> m = re.match(r"(\w+) (\w+) (\d+) ([\w\s]+) (\w+)", string) 
>>> job, dep, sal, other, names = m.groups() 
>>> job, dep, sal, other, names 
('Doctor', 'E212', '40000', 'Peter David', 'Jones') 
+0

嗨,感謝您的幫助,我試着實現第一種方法,但是它在下面的函數中使用時不起作用:(其中'x'是一個字符串)'def strTup(x): payR,dep,sal, *其他,surn = x.split() payR,dep,sal,「」.join(other),surn' – RonB7

+0

對不起,我不知道這個代碼的佈局。得到這個工作,以便它返回一個元組,如上例所示,謝謝:) – RonB7

+0

那麼,你必須'返回'元組;在我的代碼中,我只是在交互式shell中迴應它。在你的函數中,使用'return payR,dep,sal,'「.join(other),surn'。 –