如何在python中将regex sub应用于csv文件

如何在python中将regex sub应用于csv文件,python,csv,Python,Csv,我有一个csv文件,我想用python替换正则表达式 到目前为止,我有以下几点 reader = csv.reader(open('ffrk_inventory_relics.csv', 'r')) writer = csv.writer(open('outfile.csv','w')) for row in reader: reader = re.sub(r'\+','z',reader) 这给了我以下错误: Script error: Traceback (most recent

我有一个csv文件,我想用python替换正则表达式

到目前为止,我有以下几点

reader = csv.reader(open('ffrk_inventory_relics.csv', 'r'))
writer = csv.writer(open('outfile.csv','w'))
for row in reader:
    reader = re.sub(r'\+','z',reader)
这给了我以下错误:

Script error: Traceback (most recent call last):
  File "ffrk_inventory_tracker_v1.6.py", line 22, in response
    getRelics(data['equipments'], 'ffrk_inventory_relics')
  File "ffrk_inventory_tracker_v1.6.py", line 72, in getRelics
    reader = re.sub(r'\+','z',reader)
  File "c:\users\baconcatbug\appdata\local\programs\python\python36\lib\re.py",
line 191, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object
在谷歌搜索不太走运之后,我想问这里的社区如何正确打开csv文件,以便我可以在其上使用re.sub,然后将修改后的csv文件写回同一个文件名。

csv.reader(open('ffrk\u inventory\u herities.csv','r')
正在创建列表,当您迭代它并将每个值传递给
re.sub
时,您传递的是一个列表,而不是一个字符串。试试这个:

import re
import csv
final_data = [[re.sub('\+', 'z', b) for b in i] for i in csv.reader(open('ffrk_inventory_relics.csv', 'r'))]
write = csv.writer(open('ffrk_inventory_relics.csv'))
write.writerows(final_data)

如果您不需要
csv
,您可以使用
replace
替换为常规
open

with open('ffrk_inventory_relics.csv', 'r') as reader, open('outfile.csv','w') as writer:
    for row in reader:
        writer.write(row.replace('+','z'))

为什么要将
读取器
传递给
re.sub
?改为传递
。@MosesKoledoye
是一个
列表
,也不是
re.sub
的正确参数。@schwobasegl你说得对。+和z只是要替换的测试字符串,最后的替换是一个大的正则表达式参数。请确保您可以将该行更改为所需的正则表达式,即
row=re.sub('\+','z',row)
以下代码正在运行,但如何使outfile.csv替换ffrk\u inventory\u.csv?(不知道为什么格式会被破坏,我不知道如何在代码块中表达下面的内容)
以open('ffrk_inventory_relities.csv','r')作为读卡器,open('outfile.csv','w')作为写卡器:
对于读卡器中的行:
行=re.sub('(\+*,[^,]*,[^,]*,[^,]*,[^,[^,]*,[^,]*,\0'),(Core)\\g',行)writer.write(行)您考虑过使用熊猫吗?我想这会解决你的问题。#我不知道熊猫是什么,也不知道它会有什么帮助。我如何将最终的#u数据写入csv文件?