Python替换-有什么诀窍吗?更换';[%2C}';

Python替换-有什么诀窍吗?更换';[%2C}';,python,csv,replace,Python,Csv,Replace,我在csv文件中有一系列文本: 7858.35924983374[%2C]1703.69341358077[%2C]-3.075},7822.85045874375[%2C]1730.80294308742[%2C]-3.53962362760298} 有没有让replace替换[%2C]的技巧 with open('C:\IM\C3D\CommonLibraries\unewuoxhwt5k.wi2.conduit', "rb") as fin, open('C:\IM\C3D\Common

我在csv文件中有一系列文本:

7858.35924983374[%2C]1703.69341358077[%2C]-3.075},7822.85045874375[%2C]1730.80294308742[%2C]-3.53962362760298}
有没有让replace替换[%2C]的技巧

with open('C:\IM\C3D\CommonLibraries\unewuoxhwt5k.wi2.conduit', "rb") as fin, open('C:\IM\C3D\CommonLibraries\unewuoxhwt5k.wi2.conduit', "wb") as fout:
    reader = csv.reader(fin)
    writer = csv.writer(fout)
    for row in reader:
    new_row = []
    for item in row:
        new_row.append(item.replace('[%2C]', ','))
    print row, "->", new_row
    writer.writerow(new_row)
现在我得到一个文件,但它是空的,我得到这个错误消息:

Traceback (most recent call last):
  File "<pyshell#6>", line 6, in <module>
    for item in row:
NameError: name 'row' is not defined
回溯(最近一次呼叫最后一次):
文件“”,第6行,在
对于第行中的项目:
NameError:未定义名称“行”
您可以这样做

In [47]: s.replace('[%2C]', ',')
Out[47]: '7858.35924983374,1703.69341358077,-3.075},7822.85045874375,1730.80294308742,-3.53962362760298}'
试试这个

for row in row_reader:
    new_row = []
    for item in row:
        new_row.append(item.replace('[%2C]', ','))
    print row, "->", new_row
    row_writer.writerow(new_row)
你能行

In [47]: s.replace('[%2C]', ',')
Out[47]: '7858.35924983374,1703.69341358077,-3.075},7822.85045874375,1730.80294308742,-3.53962362760298}'
试试这个

for row in row_reader:
    new_row = []
    for item in row:
        new_row.append(item.replace('[%2C]', ','))
    print row, "->", new_row
    row_writer.writerow(new_row)
你想要的

编辑:

现在我理解了您的问题,我将更具描述性。首先,您希望将
[%2C]
转换为逗号,以便csv模块能够正确解析它

就像我说的,你需要清理你的数据

in_file = 'C:\IM\C3D\CommonLibraries\unewuoxhwt5k.wi2.conduit'
out_file = 'C:\IM\C3D\CommonLibraries\u2newuoxhwt5k.wi2.conduit.csv'
csv_outfile = 'C:\IM\C3D\CommonLibraries\u2newuoxhwt5k.wi2.conduit.csv.out'

with open(out_file, w) as outfile:
    with open(in_file) as infile:
        for line in infile:
            outfile.write(line.replace('[%2C]', ','))
现在您可以进行CSV解析:

reader = csv.reader(out_file)
writer = csv.writer(csv_outfile)
for row in reader:
    # do some processing on the row, which is a list of separated items
    new_row = row + ["another item"]
    writer.writerow(new_row)
你想要的

编辑:

现在我理解了您的问题,我将更具描述性。首先,您希望将
[%2C]
转换为逗号,以便csv模块能够正确解析它

就像我说的,你需要清理你的数据

in_file = 'C:\IM\C3D\CommonLibraries\unewuoxhwt5k.wi2.conduit'
out_file = 'C:\IM\C3D\CommonLibraries\u2newuoxhwt5k.wi2.conduit.csv'
csv_outfile = 'C:\IM\C3D\CommonLibraries\u2newuoxhwt5k.wi2.conduit.csv.out'

with open(out_file, w) as outfile:
    with open(in_file) as infile:
        for line in infile:
            outfile.write(line.replace('[%2C]', ','))
现在您可以进行CSV解析:

reader = csv.reader(out_file)
writer = csv.writer(csv_outfile)
for row in reader:
    # do some processing on the row, which is a list of separated items
    new_row = row + ["another item"]
    writer.writerow(new_row)


谢谢Josh,所以它应该是:val=val.replace(“[%2C',”,“)-我现在有新的_row…?谢谢Josh。我很抱歉,我确信像我这样的新手只提供了一半的信息是很烦人的。很抱歉。谢谢更新。让我试试。是的,看到一些wierd正在进行的事情。它不会给我一个文件。它必须是文件本身中的某个东西,或者是文件的方式已格式化。如果您感兴趣,请感谢Josh,因此它应该是:val=val.replace(“[%2C',”,“)-我现在有新的_row…?谢谢Josh。我很抱歉,我确信像我这样的新手只提供了一半的信息是很烦人的。很抱歉。谢谢更新。让我试试。是的,看到一些wierd正在进行的事情。它不会给我一个文件。它必须是文件本身中的某个东西,或者是文件的方式如果你好奇的话好吧,很遗憾我似乎无法做到这一点:in_file='C:\IM\C3D\CommonLibraries\unewuoxhwt5k.wi2.conduct'out_file='C:\IM\C3D\CommonLibraries\u2newuoxhwt5k.wi2.conduct'row_xhwt5;reader=csv.reader(open(in_file,“rb”))row_writer=csv.writer(open(out_ufile,“wb”))s=s.replace(“[%2C]”,“,”)writerow.writerow应该是
row\u writer.writerow
not
writer.writerow
avasal,谢谢你注意到打字错误(我迟到了)。遗憾的是,它仍然不起作用。我似乎无法取出一个文件。没什么。奇怪。我只是在同一系列文件上运行了另一个脚本,同一个文件夹,得到了结果。但出于某种原因,这个脚本不起作用。是因为文本有{和}在它里面?不,这些只是字符,它们不会产生任何问题OK,所以很遗憾我似乎无法做到这一点:in_文件='C:\IM\C3D\CommonLibraries\unewuoxhwt5k.wi2.conduct'out_文件='C:\IM\C3D\CommonLibraries\u2newuoxhwt5k.wi2.conduct'row\U reader=csv.reader(打开(in_文件,“rb”))row_writer=csv.writer(open(out_file,“wb”))s=s.replace(“[%2C]”,“,”)writer.writerow应该是
row_writer.writerow
not
writer.writerow
avasal,谢谢你注意到输入错误(我迟到了)。遗憾的是,它仍然不起作用。我似乎无法取出一个文件。没什么。奇怪。我只是在同一系列文件上运行了另一个脚本,同一个文件夹,得到了结果。但出于某种原因,这个脚本不起作用。是因为文本有{和}在其中?不,这些只是字符,它们不会产生任何问题第二个for循环
对于行中的项:
应该在
对于行中的读卡器:
请参阅我已更新的代码“首先,您要将[%2C]转换为逗号,以便csv模块将正确解析它。”如果Josh Smeaton是对的,那么这意味着你的文件在一开始就不是CSV文件。-“我确信像我这样的新手只提供一半的信息很烦人。”哦,是的。但你不是唯一一个。第二个循环
对于行中的项目:
应该在
对于行中的阅读器:
查看我更新的代码“首先,您要将[%2C]转换为逗号,以便csv模块正确解析它。”如果Josh Smeaton是对的,那么这意味着您的文件在一开始就不是csv文件。-“我确信像我这样的新手只提供一半的信息很烦人。”哦,是的。但您不是唯一一个。