Python - 将字符串拆分两次

时间:2014-04-24 03:08:59

标签: python

我有一些看起来像“string,string,string:otherstring,otherstring,otherstring”的数据。

我想一次操作第一组“字符串”。如果我拆分输入并根据冒号分隔它,我将最终得到一个列表。然后,我再也无法将其拆分,因为“'list'对象没有属性'split'”。或者,如果我决定基于逗号分隔,那么将返回所有内容(包括逗号之后的内容,我不想操纵)。 rsplit也有同样的问题。现在即使有一个列表,我仍然可以使用[0],[1]等操作第一个条目,除了“字符串”的数量总是在变化的事实,所以我无法对数字进行硬编码地点。有关如何解决此列表限制的任何想法?

3 个答案:

答案 0 :(得分:6)

试试这个:

import re

s = 'string,string,string:otherstring,otherstring,otherstring'
re.split(r'[,:]', s)
=> ['string', 'string', 'string', 'otherstring', 'otherstring', 'other string']

我们使用正则表达式和split()方法来拆分具有多个分隔符的字符串。或者,如果您想以与第二组不同的方式操纵第一组字符串,我们可以创建两个列表,每个列表都包含每个组中的字符串:

[x.split(',') for x in s.split(':')]
=> [['string', 'string', 'string'], ['otherstring', 'otherstring', 'otherstring']]

...或者,如果您只想检索第一组中的字符串,只需执行以下操作:

s.split(':')[0].split(',')
=> ['string', 'string', 'string']

答案 1 :(得分:1)

使用几个join()语句转换回字符串:

>>> string = "string,string,string:otherstring,otherstring,otherstring"
>>> ' '.join(' '.join(string.split(':')).split(',')).split()
['string', 'string', 'string', 'otherstring', 'otherstring', 'otherstring']
>>> 

答案 2 :(得分:-1)

text = "string,string,string:otherstring,otherstring,otherstring"
replace = text.replace(":", ",").replace.split(",")
print(replace)

[' string',' string',' string',' otherstring',' otherstring',& #39; otherstring']