清理从文件python读入的字符串

时间:2013-04-17 00:32:46

标签: python file-io

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

(-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, ')(')

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

3 个答案:

答案 0 :(得分:1)

您的订单有点混合(也不需要File.readlines()

[line.translate(None, ')(').split() for line in File]

答案 1 :(得分: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

答案 2 :(得分:0)

如果您想替换括号,只需在字符串上调用.replace()即可。

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

有关replace的详细信息,请参阅String Replace

您也可以使用re.sub()

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

但请注意,这比.split()更加强烈。

有关详细信息,请参阅re.sub