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