簡體   English   中英

刪除csv文件linux中的最后一個逗號

[英]Remove the last comma in a csv file linux

cdp_data.csv

1
2
3
4

所以我正在制作這款csv處理器。 當我在Windows上編譯它時,在csv內的行的末尾沒有“,”。 但是,當我在服務器上運行它時,行中有一個額外的“,”。 他們有相同的python版本。

#!/usr/bin/python
import re
import datetime

now = datetime.datetime.now()
day_minus_one = now + datetime.timedelta(days=-1)
new_date = day_minus_one.strftime('%Y%m%d')

f = open('/tmp/cdp_data.csv','rb')
fo = open('/tmp/cdp_out.csv','wb')

fo.writelines("{},".format(new_date))

for line in f:
    bits = line.split(',')
    bits[0] = re.sub(r'\n', ",", bits[0])
    bits[0] = re.sub(r'\r', "", bits[0])
    fo.write( ','.join(bits) )


f.close()
fo.close()

Windows結果:

20170329,1,2,3,4

Linux結果:

20170329,1,2,3,4,

如果您真的想要對CSV進行硬編碼,請使用bits = line.strip().split(',') strip()方法刪除尾隨空格,並消除列表末尾的空字符串。

否則,建議的方法是使用csv模塊自動處理所有讀取,寫入和解析。

import csv
with open('/tmp/cdp_data.csv', newline='') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    with open('/tmp/cdp_out.csv', 'w', newline='') as csvfile:
        spamwriter = csv.writer(csvfile, delimiter=',',
                        quotechar='|', quoting=csv.QUOTE_MINIMAL)
        for row in spamreader:
            spamwriter.writerow(row)

暫無
暫無

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

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