这是我的(缩写)文本文件(格式可能在帖子中丢失):
date close volume open high low
12:21 82.94 "14,748,136" 83.37 83.4 82.73
当我将 .txt 文件读入 Python 时,它变成了一个列表,然后我将其拆分。我将如何获取列表并将其重新排序为列向量?任何帮助将非常感激。
这是我的(缩写)文本文件(格式可能在帖子中丢失):
date close volume open high low
12:21 82.94 "14,748,136" 83.37 83.4 82.73
当我将 .txt 文件读入 Python 时,它变成了一个列表,然后我将其拆分。我将如何获取列表并将其重新排序为列向量?任何帮助将非常感激。
如果您有一个行列表并且只想将其更改为列列表,您可以简单地执行
transposed_list = zip(*original_list_of_rows)
但不清楚您是否有行列表
据推测,假设您在至少一个值周围有引号,则空格可能会出现在一个值中。所以,你不能只是split()
.
您可以将其解析为一种时髦的 CSV 方言,其中分隔符是一个空格,并且会跳过初始空格:
with open('textfile') as f:
rows = list(csv.reader(f, delimiter=' ', skipinitialspace=True)
这将自动为您和所有内容处理报价。
但是,至少在某些情况下,像这样的列数据可以具有根本不分离的值,如下所示:
date close volume open high low
12:21 82.94 "14,748,136" 83.37 83.4 82.73
12:22 93213.12"15,222,139" 93201.1493333.3390213.94
如果是这样,那么您只能通过在适当的列位置切割行来解析它。如果幸运的话,您可以使用标题;否则,您需要手动指定它们。我会假设你不走运,所以:
columns = 0, 7, 15, 31, 39, 47, None
def columnize(line):
return [line[columns[i]:columns[i+1]].rstrip() for i in range(len(columns)-1)]
with open('textfile') as f:
rows = map(columnize, f)
[[x for i,x in enumerate(text.split()) if (i+j)%colNumber==0 ]
for j in range(colNumber)]
这要求您已经知道列号并且文本文件被格式化为表格。例如:
text='''a b c
1 2 4
1 2 4
1 2 4
'''
colNumber=3
table=[[x for i,x in enumerate(text.split()) if (i+j)%colNumber==0 ]
for j in range(colNumber)]
print(table)
结果:
[['a', '1', '1', '1'], ['c', '4', '4', '4'], ['b', '2', '2', '2']]
您可以使用熊猫数据框。(希望这是一个制表符分隔的文件)
import pandas as pd
import numpy as np
import csv
df = pd.read_csv('text.txt', sep='\t', header=None)
print df
然后,您可以重命名列。