我想修改 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
