2016-02-29 80 views
-3

我想解析出逗号分隔字符串的不同部分。如何使用split命令解决从后端的字符串

这里有两个例子字符串:沿低北极,阿拉斯加,Phytocoenologia,V.35,2005年,第一个生物气候梯度

植物群落和土壤中cryoturbated苔原。 761.

可视化霜冻沸腾,科学与工程的挑战,v.13,2005,p。 18.

我需要将页码,年,卷(v.13),日记和标题存储到单独的变量中。我想从后面处理这些字符串,因为标题中可能带有逗号(计划以逗号分隔),并且字符串的后端非常一致。任何关于如何解决这个问题的指针都会很有帮助。谢谢!

对第二个例子:

page = 'p.18' 
year = '2005' 
volume = 'v.13' 
journal = 'Challenges in Science and Engineering' 
title = 'Visualizing Frost Boils' 
+0

关于SO处理反转字符串有许多问题。这就是为什么你会收到我相信的低估。 – PyNEwbie

+1

没有太多关于扭转字符串,因为它是从右分裂 - str.rsplit(',',4)是你正在寻找 – PaulMcG

回答

1
title,journal,vol,year,page = my_string.rsplit(',',4) 

我想是你想

+0

谢谢@PaulMcguire:P –

+1

我知道你的意思。 :) – PaulMcG

1

您可以使用rsplit()什么:

>>> s = 'Visualizing Frost Boils,Challenges in Science and Engineering, v.13, 2005, p. 18.' 
>>> title, journal, volume, year, page = [entry.strip() for entry in s.rsplit(',', 4)] 
>>> page 
'p. 18.' 
>>> year 
'2005' 
>>> volume 
'v.13' 
>>> journal 
'Challenges in Science and Engineering' 
>>> title 
'Visualizing Frost Boils' 

你分割你的字符串开始形式与右rsplit(',' 4)在逗号处并将分割次数限制为4. entry.strip()删除条目周围的空白区域。

0

如果逗号的数量总是相同,则可以编写一个函数来获取各个逗号的索引,然后在索引之间返回字符串。

例如,如果再算上有4个逗号,我们必须:

title = string[:comma_index1] 
year = string[comma_index1:comma_index2] 
volume = string[comma_index2:comma_index3] 
year = string[comma_index3:comma_index4] 
page = string[comma_index4:] 

这可能是一个幼稚的方式做到这一点,虽然。

+1

下面MikeMüller建议的rsplit方法是一个更好的解决方案。 –

0

就我个人而言,我会使用正则表达式。

>>> import re 
>>> c = re.compile('(.*), v.(\d*), (\d*), p. (\d*).') 
>>> c.match('Plant communities and soils in cryoturbated tundra along a bioclimate gradient in the Low Arctic, Alaska,Phytocoenologia, v.35, 2005, p. 761.').group(1,2,3,4) 

('Plant communities and soils in cryoturbated tundra along a bioclimate gradient in the Low Arctic, Alaska,Phytocoenologia', '35', '2005', '761') 
相关问题