Skip to main content
 首页 » 编程设计

python之如何修改csv文件中的重复字段

2025年05月04日23sky-heaven

我想修改 csv 文件中的字段电子邮件,例如 mycsv_file.csv:

john@gmail.com 
mary@gmail.com 
klarck@gmail.com 
ralf@gmail.com 
john@gmail.com 
mary@gmail.com 
klarck@gmail.com 

读取csv文件代码:

import csv 
 
with open('mycsv_file.csv', 'r') as csv_file:  
     spamreader = csv.reader(csv_file) 
     for line in spamreader: 
         ord = next.spamreader 
         for k in ored:        
            if line[0]==k[0]: 
               line[0]==???? 

我想要的结果:

john@gmail.com 
mary@gmail.com 
klarck@gmail.com 
ralf@gmail.com 
john1@gmail.com 
mary1@gmail.com 
klarck1@gmail.com 

请您参考如下方法:

你可以使用 collections.Counter跟踪一个电子邮件地址到目前为止被查看了多少次,并知道要附加什么数字作为后缀以使其独一无二。为了说明这一点,我在示例输入的末尾添加了一行,现在是:

john@gmail.com 
mary@gmail.com 
klarck@gmail.com 
ralf@gmail.com 
john@gmail.com 
mary@gmail.com 
klarck@gmail.com 
mary@gmail.com,third occurrence 

代码如下:

import csv 
from collections import Counter 
 
# Note: For Python 2.x, use "open('mycsv_file.csv', 'rb')" below. 
with open('mycsv_file.csv', 'r', newline='') as csv_file: 
     occurrences = Counter() 
     for line in csv.reader(csv_file): 
         email = line[0] 
         if email in occurrences: 
            head, tail = email.split('@') 
            print('{}@{}'.format(head+str(occurrences[email]), tail)) 
            occurrences[email] += 1 
         else: 
            print('{}'.format(email)) 
            occurrences[email] = 1 

输出(注意最后生成的 mary2@gmail.com,因为它已经被看过两次):

john@gmail.com 
mary@gmail.com 
klarck@gmail.com 
ralf@gmail.com 
john1@gmail.com 
mary1@gmail.com 
klarck1@gmail.com 
mary2@gmail.com