[英]How to sort this CSV file using Python (3)
我到處找了一些教程,但由於排序真的很奇怪,仍然無法提出任何方法來對該文件進行排序!
該文件的格式為:(其中x是數字,y是日期,z是時間,b是數字)
x x x x x
y y y y y
z z z z z
b b b b b
實際上每行有50個條目,但這是文件的極其簡化的版本。
我正在努力做的是對每個條目進行排序,使其為[x,y,z,b]
到目前為止,我只想將每一行分成一個列表,但這顯然不是我需要做的,因此我陷入了困境。
import csv
with open('sample.txt') as csvfile:
readCSV = csv.reader(csvfile, delimiter=' ')
for row in readCSV:
print(row)
Numpy的移調就是您要尋找的,即
from csv import reader
from numpy import transpose
file = open("file.dat")
results = reader(file, delimiter=' ')
print(transpose(list(results)))
這將打開您擁有的具有原始值的任何test.txt文件,逐行通過並構造一個轉置的數組。 然后,對它們進行迭代,並按您要求的順序以及csv將它們打印到newText.txt中。 不知道你想要更多:)。
import csv
newLine = []
newArr = []
x = 0
with open ('text.txt', 'r') as f:
end = len(f.readline().replace(' ',''))
f.seek(0)
while x <= end:
for line in f:
newLine.append(line.split(" ")[x])
newArr.append(newLine)
x += 1
# outputs a text file
with open ('newText.txt', 'wb') as newf:
for line in newArr:
newf.write(' '.join(line) + '\n')
# outputs a csv file
with open('text.csv', 'wb') as csvfile:
writeCSV = csv.writer(csvfile)
for line in newArr:
writeCSV.writerow(''.join(line))
排序文件:
x1 x2 x3 x4 x5
y y y y y
z z z z z
b b b b b
程序:
import csv
with open("C:\\Users\\sortfile.csv", 'r') as fopen:
rows = csv.reader(fopen)
csvf = list(rows)
x = 0
array = []
while True:
lines = []
try:
for i in csvf:
lines.append(i[x])
array.append(lines)
x +=1
except IndexError:
break
結果:
[['x1', 'y', 'z', 'b'], ['x2', 'y', 'z', 'b'], ['x3', 'y', 'z', 'b'], ['x4', 'y', 'z', 'b'], ['x5', 'y', 'z', 'b']]
希望我能正確理解您的問題。
鑒於:
$ cat so.csv
x1,x2,x3,x4,x5
y1,y2,y3,y4,y5
z1,z2,z3,z4,z5
b1,b2,b3,b4,b5
您通常會像這樣逐行讀取文件:
import csv
LoL=[]
with open(fn) as f:
for row in csv.reader(f):
LoL.append(row)
或者,更緊湊地說:
LoT=[row for row in csv.reader(f)]
>>> LoL
[['x1', 'x2', 'x3', 'x4', 'x5'], ['y1', 'y2', 'y3', 'y4', 'y5'], ['z1', 'z2', 'z3', 'z4', 'z5'], ['b1', 'b2', 'b3', 'b4', 'b5']]
您可以使用zip
進行轉置:
with open(fn) as f:
LoT=[row for row in zip(*csv.reader(f))]
>>> LoT
[('x1', 'y1', 'z1', 'b1'), ('x2', 'y2', 'z2', 'b2'), ('x3', 'y3', 'z3', 'b3'), ('x4', 'y4', 'z4', 'b4'), ('x5', 'y5', 'z5', 'b5')]
然后,您可以根據需要將元組的轉置列表寫入新的csv或進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.