我正试图从收到的文本文件中导入数据。
文本文件有点大(400 MB(。此链接提供(https://drive.google.com/file/d/11CwId3feJRZGvP2OUAtixuZEFztrCP3W/view?usp=sharing)。考虑到它的大小,它可能需要几分钟的下载时间。
文件中的数据采用了我以前从未遇到过的格式。列之间的分隔符似乎是分号,数据行之间似乎由一个空行分隔。
我没能读入数据。以下是我用来尝试从文件中导入一列字符串数据和两列浮点数据的Python代码:
import numpy as np
f = 'summ.txt'
ID = np.loadtxt(f, dtype=np.str, unpack=True, usecols=[4], skiprows=8, delimiter = '; ')
hbeg, hend = np.loadtxt(f3, unpack=True, usecols=[67,73], skiprows=8, delimiter = '; ')
一个解决方案/指导会很好。
我只需使用csv
将其重新格式化为
import csv
import time
start = time.time()
with open('summ.txt') as fin, open('output.txt', 'w') as fout:
csv_reader = csv.reader(fin, delimiter=';') # read semicolon
csv_writer = csv.writer(fout, delimiter=',') # write comma
for row in csv_reader:
if row: # skip empty row
row = [x.strip() for x in row] # remove spaces
csv_writer.writerow(row)
end = time.time()
print('time:', end-start)
在我的电脑上花了大约31秒。
但您也可以将值保留为2D列表,并转换为numpy array
或pandas DataFrame
import csv
import time
start = time.time()
IDs = []
hbeg = []
hend = []
with open('Pulpit/summ.txt') as fin:
csv_reader = csv.reader(fin, delimiter=';')
for row in csv_reader:
if row:
row = [x.strip() for x in row]
if len(row) > 1:
IDs.append(row[4])
hbeg.append(row[64])
hend.append(row[73])
end = time.time()
print('time:', end-start)
print(IDs[:10])
print(hbeg[:10])
print(hend[:10])