簡體   English   中英

刪除字符的所有尾隨出現

[英]Strip all trailing occurrences of a character

我有一個需要清理的CSV文件。 它具有類似的記錄

1, a[]b[][][], c[]d[][][]
2, a[]b[]c[]d[]e, a[]b[]c[]d[]e

字段中出現的尾隨[]都需要從行中刪除,然后將其寫入新文件。 例如,在這種情況下,第1行將變為1, a[]b, c[]d和第2行將保持不變。

就我所知:

import csv

new_rows = []

with open('input.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:    
        new_row = [i.split(',').rstrip('[]') for i in row] #won't work since this is a list, not a string
        new_rows.append(new_row) 

with open('output.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerows(new_rows)

我知道rstrip僅適用於字符串,而不適用於列表。 我是Python的新手,無法完全弄清楚,有人可以伸出援手嗎?

幾乎在那里,看起來像是錯誤的分裂。

import csv

new_rows = []

with open('input.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:    
        new_row = [x.rstrip('[]') for x in row]
        new_rows.append(new_row) 

with open('output.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerows(new_rows)

輸入以下內容:

1, a[]b[][][], c[]d[][][]
2, a[]b[]c[]d[]e, a[]b[]c[]d[]e

我得到以下內容:

1, a[]b, c[]d
2, a[]b[]c[]d[]e, a[]b[]c[]d[]e
import csv

new_rows = []

with open('input.csv', 'rb') as inf:
    with open('output.csv', 'wb') as outf:
        reader = csv.reader(inf)
        writer = csv.writer(outf)
        for row in reader: 
            new_row = [ field.rstrip('[]') for field in row ]
            writer.writerow(new_row)

在此之前的Python 2.7,你可以在上下文管理器合並成一個with with語句

import contextlib
with contextlib.nested(open('input.csv', 'rb'), open('output.csv', 'wb')) as (inf, outf):
    reader = ...

在Python 2.7中, with語句本身已被修改以支持此功能:

with open('input.csv', 'rb') as inf, open('output.csv', 'wb') as outf:

盡管隱式行連續不可用; 要分成兩行,必須使用行繼續符:

with open('input.csv', 'rb') as inf,\
     open('output.csv', 'rb') as outf:

暫無
暫無

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

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