Python:拆分一个字符串行

时间:2015-01-13 01:30:01

标签: python python-2.7

我已经编写了以下代码来分割一行,我试图做的是获得1.802e + 05和1.739e + 04。我想我可以用空格分割线,然后我可以得到那些值,但到目前为止我得到的只是字母H.任何人都可以告诉我我的错误在哪里?

line = 'Htin     1.802e+05 [J kg^-1]    Htout    1.739e+04 [J kg^-1]'
line.split(' ')
print line[0]

6 个答案:

答案 0 :(得分:2)

line.split()返回您未存储在任何位置的结果。所以,那条线没有效果。 在下一行中,line仍然是字符串,因此第[0]行是H

line = 'Htin 1.802e+05 [J kg^-1] Htout 1.739e+04 [J kg^-1]' temp = line.split(' ') print temp[0]

答案 1 :(得分:2)

就个人而言,我跳过split并向右转移re解决方案 - 例如,如果您要提取的每个数字都是指数表示法,

numstrings = re.findall(r'\d\.\d+e[+-]\d+', line)

会奏效。只需将RE模式调整为您想要提取的数字形式!

答案 2 :(得分:1)

斯普利特不改变线条;它返回一个字符串列表。但即使它确实如此,第[0]行也不会给你一个数字。

答案 3 :(得分:1)

您可以使用try / except:

>>> line = 'Htin     1.802e+05 [J kg^-1]    Htout    1.739e+04 [J kg^-1]'
>>> result=[]
>>> for e in line.split():
...    try:
...       result.append(float(e))
...    except ValueError:
...       pass
... 
>>> result
[180200.0, 17390.0]

答案 4 :(得分:1)

line.split()将返回您未存储在任何位置的结果。使用line[0]会在字符串0中为您提供索引为line的字符。

这应该更符合您的要求:

>>> line = 'Htin     1.802e+05 [J kg^-1]    Htout    1.739e+04 [J kg^-1]'
>>> lines = line.split()
>>> lines
['Htin', '1.802e+05', '[J', 'kg^-1]', 'Htout', '1.739e+04', '[J', 'kg^-1]']
>>> lines[1]
'1.802e+05'
>>> lines[5]
'1.739e+04'

答案 5 :(得分:0)

import re

line = 'Htin     1.802e+05 [J kg^-1]    Htout    1.739e+04 [J kg^-1]'
a=line.split()
for x in a:
    if re.findall("[0-9][0-9]",x):
        print (x)

输出:

>>> 
1.802e+05
1.739e+04
>>> 

re模块,用于搜索您想要的内容。