簡體   English   中英

用python洗凈csv行

[英]shuffle rows of csv with python

我想簡單地改組csv文件的行,但保持標頭為靜態。

unshuffled.csv的內容

Lastname  Firstname   Age

taylor    bob         40
mcdonald  kevin       32
smith     john        18

想要輸出到shuffled.csv如下

Lastname  Firstname   Age
smith     john        18
mcdonald  kevin       32
taylor    bob         40

我正在使用下面的代碼,這是另一篇文章中建議的,但對我不起作用。

from random import shuffle

with open('unshuffled.csv','r') as ip:
    data=ip.readlines()

    header, rest=data[0], data[1:]

    shuffle(rest)
with open('shuffled.csv','w') as out:
    out.write(''.join([header]+rest))

但是,輸出csv會按如下所示在三列之外對數據進行混洗。

Lastname  Firstname   Age
smith     john        18    32    kevin
taylor    bob         40

我如何才能使列為靜態,而只是將csv文件中的行洗牌。

您必須在unshuffled.csv的最后一行上缺少換行符,因此請使用以下命令:

import random

with open('unshuffled.csv', 'r') as r, open('shuffled.csv', 'w') as w:
    data = r.readlines()
    header, rows = data[0], data[1:]
    random.shuffle(rows)
    rows = '\n'.join([row.strip() for row in rows])
    w.write(header + rows)

嘗試這樣的事情:

from random import shuffle

with open('unshuffled.csv') as ip:
    lines=ip.readlines()
    header = lines.pop(0)
    shuffle(lines)
    lines.insert(0, header)

with open('shuffled.csv','w') as out:
    out.writelines(lines)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM