-2

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

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

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

4

3 回答 3

5

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

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...
于 2013-09-11T22:57:10.003 回答
1

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

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

阅读有关翻译的更多信息


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

于 2013-09-11T22:49:03.473 回答
-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')] 然后对比赛做你想做的事。

于 2013-09-11T22:52:48.207 回答