这是你想要的吗?
import ast
with open("1.txt","r") as inp:
c= [a if a.isalpha() else ast.literal_eval(a.strip()) for line in inp for a in line.split() ]
输出:
print c
['HNUS', 4973168.84, 1734085.512, -3585434.051, 'PRET', 5064032.237, 2724721.031, -2752950.762, 'RBAY', 4739765.776, 2970758.46, -3054077.535, 'TDOU', 5064840.815, 2969624.535, -2485109.939, 'ULDI', 4796680.897, 2930311.589, -3005435.714]
print c[1],type(c[1])
4973168.84 <type 'float'>
您不能直接将as.literal_eval()
应用于字符串参数,因为它会删除参数的引号。
i.e)
ast.literal_eval("as")
File "<unknown>", line 1
as
^
SyntaxError: unexpected EOF while parsing
ast.literal_eval('"as"')
'as'
将其转换为二维数组的方法如下:
import ast
with open("1.txt","r") as inp:
c= [[a if a.isalpha() else ast.literal_eval(a.strip()) for a in line.split() ] for line in inp ]
输出:
print c
[['HNUS', 4973168.84, 1734085.512, -3585434.051], ['PRET', 5064032.237, 2724721.031, -2752950.762], ['RBAY', 4739765.776, 2970758.46, -3054077.535], ['TDOU', 5064840.815, 2969624.535, -2485109.939], ['ULDI', 4796680.897, 2930311.589, -3005435.714]]
str
或浮点数)? - Clodion