【发布时间】:2018-07-24 02:39:26
【问题描述】:
我有制表符分隔的文件(city-data.txt):
Alabama Montgomery 32.361538 -86.279118
Alaska Juneau 58.301935 -134.41974
是否可以以某种方式将前两列读取为字符串,将后两列读取为浮点数?
我的输出应该是这样的:
[(Alabama,Montgomery,32.36,-86.28),
(Alaska,Juneau,58.30,-134.42)]
我试过了:
mylist2=np.genfromtxt(r'city-data.txt', delimiter='\t', dtype=("<S15","
<S15", float, float)).tolist()
这给了我字节类型的前两列:
[(b'Alabama', b'Montgomery', 32.361538, -86.279118),
(b'Alaska', b'Juneau', 58.301935, -134.41974)]
我也试过了:
with open('city-data.txt') as f:
mylist = [tuple(i.strip().split('\t')) for i in f]
这给了我字符串类型的所有列:
[('Alabama', 'Montgomery', '32.361538', '-86.279118'),
('Alaska', 'Juneau', '58.301935', '-134.41974')]
我不知道如何实现我所需要的......
【问题讨论】:
-
后一种方法有什么问题?只需根据需要将所有内容转换为 np.float64 即可。
-
另外,对于初学者来说,更好的界面可能是pandas而不是numpy。
-
只需读取所有内容,然后根据需要进行转换
-
您是否尝试通过将最后两项转换为浮点数来添加到您的第二个解决方案?
for item in line: if item.isdigit(): item = float(item); apend item to new container.有什么问题? -
在 Py3 中,默认的字符串类型是 unicode,
numpy标记为U。b'one'是一个字节串,一个Sdtype,这是Py2中的默认值。
标签: python string numpy format genfromtxt