1

我正在尝试读取包含大量值行和相关错误的数据文件,例如:

(-5.63150902306 +/- 0.549562002684) * (9.62647766508 +/- 1.00395610402)
(5.92097311289 +/- 0.79652553075) * (5.62917665811 +/- 0.772898764928) / (3.2342 +/- 2.4235)

我已经使用以下内容成功阅读了“片段”:

FileSegments = [lin.split( ) for line in File.readlines()]

但我也想同时删除花括号'('')'......我试过了

FileSegments = str([lin.split( ) for line in File.readlines()]).translate(None, ')(')

但是,[当我尝试打印它时,它会随机返回!

4

3 回答 3

1

你只是把订单有点混杂(也不需要File.readlines()

[line.translate(None, ')(').split() for line in File]
于 2013-04-17T00:37:41.977 回答
0

您可以按照以下方式做一些事情:

st='''\
(-5.63150902306 +/- 0.549562002684) * (9.62647766508 +/- 1.00395610402)
(5.92097311289 +/- 0.79652553075) * (5.62917665811 +/- 0.772898764928) / (3.2342 +/- 2.4235)'''

for line in st.splitlines():
    print 'line:',line
    print line.replace('(','').replace(')','')

印刷:

line: (-5.63150902306 +/- 0.549562002684) * (9.62647766508 +/- 1.00395610402)
-5.63150902306 +/- 0.549562002684 * 9.62647766508 +/- 1.00395610402
line: (5.92097311289 +/- 0.79652553075) * (5.62917665811 +/- 0.772898764928) / (3.2342 +/- 2.4235)
5.92097311289 +/- 0.79652553075 * 5.62917665811 +/- 0.772898764928 / 3.2342 +/- 2.4235
于 2013-04-17T00:37:53.333 回答
0

如果你想替换括号,你可以简单地调用.replace()一个字符串。

file_segments = [line.replace('(','').replace(')','').split() for line in fh.readlines()]

有关 的详细信息replace,请参阅字符串替换

你也可以使用re.sub()

file_segments = [re.sub('[\(|\)]','', line).split() for line in fh.readlines()]

但请注意,这不仅仅是.split().

有关更多信息,请参阅re.sub

于 2013-04-17T00:41:59.173 回答