使用Python拆分字符串

时间:2013-09-11 22:40:16

标签: python

我正在尝试使用Python来分割字符串,如下所示:

10004, 10005,     0,'1 ',2,2,1, 0.00000E+0, 0.00000E+0, 2, 'ALCAZAR,NMRD     ',1, 129,1.0000

我想将"ALCAZAR,NMRD "作为一个单词。显然,如果我在","中使用str.split()作为拆分器,则该单词将被拆分为两个字符串。我正考虑用空格替换此单词中的",",然后使用","作为拆分器来分割整行。但是str.replace()没有给我指定开始或结束的位置。非常感谢您的反馈。

3 个答案:

答案 0 :(得分:5)

对于您的示例字符串,您可以使用csv module

import csv

st="""\
10004, 10005, 0,'1 ',2,2,1, 0.00000E+0, 0.00000E+0, 2, 'ALCAZAR,NMRD ',1, 129,1.0000"""

kwargs={'skipinitialspace':True, 'quotechar':"'"}

for e in csv.reader(st.splitlines(), **kwargs):
    print e

打印:

['10004', '10005', '0', '1 ', '2', '2', '1', '0.00000E+0', '0.00000E+0', '2', 
'ALCAZAR,NMRD ', '1', '129', '1.0000']

如果你想摆脱每个元素上的尾随空格(例如'ALCAZAR,NMRD ' - > 'ALCAZAR,NMRD'):

for e in csv.reader(st.splitlines(), **kwargs):
    e=[x.strip() for x in e]
    # ... process the split list of elements from a line of csv...

答案 1 :(得分:1)

如果您只想从字符串中删除逗号,可以使用string.translate() ...

my_string = "ALCAZAR,NMRD"
my_string.translate(None, ',')

Read more about translate


修改:您也可以使用string.replace(),但我认为string.translate()更快。

答案 2 :(得分:-1)

只需使用正则表达式:

import re
target = """10004, 10005, 0,'1 ',2,2,1, 0.00000E+0, 0.00000E+0, 2, 'ALCAZAR,NMRD ',1, 129,1.0000"""

exp = re.compile(r'(['\"][A-Za-z ]+,[\A-Za-z ]+['\"])|\'*([0-9\.E\+\-]+)')
exp.findall(target)

返回[('','10004'),('','10005'),('','0'),('','1'),('','2'), ('','2'),('','1'),('','0.00000E + 0'),('','0.00000E + 0'),('','2') ,(“'ALCAZAR,NMRD'”,''),('','1'),('','129'),('','1.0000')]  然后做你想要的比赛。