2017-06-08 49 views
-2

如何通过“,”除python中的某些字符之间的字符串? 我的数据是这样的:如何用“,”分隔字符串,除了在Python中的某些字符之间?

('00012+1357','LSC 2','Aa,Ab',2014,2014, 2,185,185, 0.2, 0.2,10.7,13.1,'M0.5',+019,+135,NULL,NULL,NULL,NULL,'000113.19+135830.3') 

我需要通过拆分他们 “” 除了'AA,AB'

结果应该是:

("00012+1357" "LSC 2" "Aa,Ab" "2014" "2014" "2" "185" "185" "0.2" "0.2" "10.7" "13.1" "M0.5" "+019" "+135" "NULL" "NULL" "NULL" "NULL" "000113.19+135830.3") 

你知道该怎么做?

+5

我这样做,但是有什么*你*尝试过。 – Pythonista

+0

你的数据看起来像一个元组......你究竟想要做什么? 'join'? – depperm

+2

这个数据是一个'string'还是一个'list'? – KelvinS

回答

0

看来,你正在寻找“”。加入():

the_string = ('00012+1357','LSC 2','Aa,Ab',2014,2014, 2,185,185, 0.2, 0.2,10.7,13.1,'M0.5', 19, 135, 'NULL','NULL','NULL','NULL','000113.19+135830.3') 

the_string = map(str, the_string) 

new_string = (' '.join(i for i in the_string)) 
0

看来你试图解析CSV数据。 csv模块应该绰绰有余,并且能够处理所有这些边界情况。

0

我会试穿一些代码。 如果在quotes之外,则将其拆分为needle。 假设needlequotes都是一个字符长。

#!python3 

def splitExceptBetween(istr, needle, quotes): 
    inside = -1 
    res = [] 
    oldt = 0 
    for index, letter in enumerate(istr): 
     if letter==quotes: 
      inside = -inside 
     elif letter==needle and inside == -1: 
      res.append(istr[oldt:index]) 
      oldt = index+1 
    if oldt<len(istr): 
     res.append(istr[oldt:]) 
    return res 

istr = "as'das'd.asdas'd.a'sdas.drth..rt'h.r'th.'" 
print(splitExceptBetween(istr, ".", "'")) 
istr = "00012+1357,LSC 2,'Aa,Ab',2014,2014, 2,185,185, 0.2, 0.2,10.7,13.1,M0.5,+019,+135,NULL,NULL,NULL,NULL,000113.19+135830.3" 
print(splitExceptBetween(istr, ",", "'")) 
相关问题