使用Python拆分字符串

2024-06-01 20:39:57 发布

您现在位置: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()没有给我指定的开始或结束位置。非常感谢您的反馈。在


Tags: 字符串单词replacesplit空格分隔符alcazarstr
3条回答

只需使用正则表达式:

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'),('',1'),('',0.00000E+0'),('',0.00000E+0'),('',2'),(“'ALCAZAR,NMRD',”),('',1'),('',129'),('',1.0000')] 那就按你的意愿去做吧。在

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

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

Read more about translate


编辑:你也可以使用string.replace(),但我认为string.translate()更快。在

对于示例字符串,可以使用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

印刷品:

^{pr2}$

如果您想去掉每个元素上的尾随空格(例如'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...

相关问题 更多 >