我已经编写了以下代码来分割一行,我试图做的是获得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]
答案 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
模块,用于搜索您想要的内容。