[英]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.