需要搜索数据并删除客户社会保险号。
with open('customerdata.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data.append(row)
for row in customerdata.csv:
results = re.search(r'\d{3}-\d{2}-\d{4}', row)
re.replace(results, "", row)
print(results)
脚本新手并不确定我需要做些什么来解决这个问题。
答案 0 :(得分:1)
这不是正则表达式的工作。
您使用的是csv.DictReader
,非常棒。这意味着您可以访问csv文件中的列名。你应该做的是记下包含SSN的列,然后在没有它的情况下写出行。这样的事情(未经测试):
with open('customerdata.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
del row['SSN']
print(row)
如果你需要保留数据但是将其删空,那么就像:
with open('customerdata.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
row['SSN'] = ''
print(row)
希望你能从这里拿东西;例如,您可能想要使用csv dict writer,而不是打印。取决于您的用例。虽然,坚持使用csv操作,绝对避免在这里使用正则表达式。您的数据采用csv格式。将数据视为行和列,而不是作为要复制的单个字符串。 :)
答案 1 :(得分:0)
我没有在Python 3.6.5 docs中看到re的替换函数。
我相信你想要使用的功能是re.sub:
re.sub(pattern,repl,string,count = 0,flags = 0)
返回通过替换repl替换字符串中最左边非重叠模式而获得的字符串。如果找不到模式,则返回字符串不变。
这意味着您在第二个for循环中所需要的只是:
for row in customerdata.csv:
results = re.sub(r'\d{3}-\d{2}-\d{4}', row, '')
print(results)