这是我的(缩写)文本文件(格式可能在帖子中丢失):
date close volume open high low
12:21 82.94 "14,748,136" 83.37 83.4 82.73
当我将.txt文件读入Python时,它变成了一个列表,然后我将其拆分。我如何获取列表并重新排序到列向量?任何帮助将非常感激。
答案 0 :(得分:4)
如果您有一个行列表,而您只想将其更改为列列表,则只需执行
transposed_list = zip(*original_list_of_rows)
但如果您有行列表
则不清楚答案 1 :(得分:0)
据推测,假设您至少有一个值附近有引号,则空格可能会出现在值中。所以,你不能只是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)
答案 2 :(得分:0)
[[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']]
答案 3 :(得分:0)
您可以使用pandas数据帧。 (希望这是一个制表符分隔文件)
import pandas as pd
import numpy as np
import csv
df = pd.read_csv('text.txt', sep='\t', header=None)
print df
然后您可以重命名列。