簡體   English   中英

想要append一個文件中的一列而不用Pandas

[英]Want to append a column in a file without using the Pandas

我有一個文件outfile.txt ,如下所示:

1,2,3,4,0,0.95
1,2,4,4,0,0.81
5,6,3,1,0,0.89
7,6,8,8,0,0.77
6,6,4,9,0,0.88
9,9,9,1,0,0.66
4,3,6,9,0,0.85
1,2,6,7,0,0.61

現在我想要 append 一個額外的 1 到每一行。 所以所需的 output 文件如下所示:

1,2,3,4,0,0.95,1
1,2,4,4,0,0.81,1
5,6,3,1,0,0.89,1
7,6,8,8,0,0.77,1
6,6,4,9,0,0.88,1
9,9,9,1,0,0.66,1
4,3,6,9,0,0.85,1
1,2,6,7,0,0.61,1

我該怎么做? 每當我在谷歌上搜索以尋找解決方案時,我到處都會看到使用 Pandas 提供這種解決方案,但我不想使用它。

由於您的文件是 csv 格式, csv模塊可以幫助您。 如果您遍歷reader object,它會為您提供文件中每一行的項目列表,然后只需.append()即可。

import csv

with open("outfile.txt") as f:
    reader = csv.reader(f)
    for line in reader:
        line.append("1")
        print(",".join(line))

如果你有一個類似column的列,你可以 zip 它與reader object 和 append 循環中的相應元素:

import csv

column = range(10)

with open("outfile.txt") as f:
    reader = csv.reader(f)
    for line, n in zip(reader, map(str, column)):
        line.append(n)
        print(",".join(line))

我打印出來了,你可以把它寫到一個新的文件中。

您可以使用csv模塊逐行讀寫文件。 reader object 將迭代輸入文件的行,而writer.writerows將使用該迭代器。 您只需要一些額外的代碼來添加 1。此示例使用列表生成器來添加額外的列。

import csv
import os

filename = "outfile.txt"
tmp = filename + ".tmp"
    
with open(filename, newline="") as infile, open(tmp, "w", newline="") as outfile:
    csv.writer(outfile).writerows(row + [1] for row in csv.reader(infile))
os.rename(tmp, filename)

只是,逐行遍歷文件並在每行末尾添加,1

with open('outfile.txt', 'r') as input:
    with open('outfile_final.txt', 'w') as output:
        for line in input:
            line = line.rstrip('\n') + ',1'
            print(line, file=output)

暫無
暫無

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

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