我正在尝试使用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()
没有给我指定开始或结束的位置。非常感谢您的反馈。
答案 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, ',')
修改:您也可以使用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')] 然后做你想要的比赛。