Skip to main content
 首页 » 编程设计

python之替换格式为 csv 行的字符串中的项目

2025年05月04日31lhb25

目标是以优雅的方式用new_item替换csv_line的第二个字段。这个问题与 Rawing 列出的主题不同,因为这里我们使用的是不同的数据结构,尽管我们可以使用其他主题来获得灵感。

# Please assume that csv_line has not been imported from a file. 
csv_line = 'unknown_item1,unknown_old_item2,unknown_item3' 
new_item = 'unknown_new_item2' 
goal = 'unknown_item1,unknown_new_item2,unknown_item3' 
 
# Works but error prone. Non-replaced items could be inadvertently swapped. 
# In addition, not convenient if string has many fields. 
item1, item2, item3 = csv_line.split(',') 
result = ','.join([item1, new_item, item3]) 
print(result)  # unknown_item1,unknown_new_item2,unknown_item3 
 
# Less error prone but ugly. 
result_list = [] 
new_item_idx = 1 
for i, item in enumerate(csv_line.split(',')): 
    result_list += [item] if i != new_item_idx else [new_item] 
result = ','.join(result_list) 
print(result)  # unknown_item1,unknown_new_item2,unknown_item3 
 
# Ideal (not-error prone) but not working. 
csv_line.split(',')[1] = new_item 
print(csv_line)  # unknown_item1,unknown_old_item2,unknown_item3 

请您参考如下方法:

可以使用 Python 的 CSV 库通过 io.StringIO() 替换第二项。对象。这表现得像文件,但可以作为字符串读取:

import csv 
import io 
 
csv_line = 'unknown_item1,unknown_old_item2,unknown_item3' 
new_item = 'unknown_new_item2' 
 
row = next(csv.reader(io.StringIO(csv_line))) 
row[1] = new_item 
output = io.StringIO() 
csv.writer(output).writerow(row) 
goal = output.getvalue() 
 
print(goal) 

这会将 goal 显示为:

unknown_item1,unknown_new_item2,unknown_item3