Python 替换csv文件中的多个字符串

Python 替换csv文件中的多个字符串,python,python-2.7,Python,Python 2.7,我正在尝试替换csv文件中的多个字符串。这些字符串可能不在特定列中 我在这个线程中使用了这个例子,wordpress条目。我以为我有CSV模块,但我猜它没有替换功能。我尝试了下面的方法,但它只替换了第一本词典中的内容。它必须先处理第一个字典中的条目,第二个字典的顺序并不重要 def replace_all(text, dic): for i, j in dic.iteritems(): text = text.replace(i, j) return text

我正在尝试替换csv文件中的多个字符串。这些字符串可能不在特定列中

我在这个线程中使用了这个例子,wordpress条目。我以为我有CSV模块,但我猜它没有替换功能。我尝试了下面的方法,但它只替换了第一本词典中的内容。它必须先处理第一个字典中的条目,第二个字典的顺序并不重要

def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text

f_dic = {'-':' '}
s_dic = {'  ':' ','   ':' ','SASD D':'SASD-D','DC W':'DC-W',r'PROD\s\d':r'PROD\d'}

with open('file1.csv','r') as f:
    text=f.read()
    with open('file2.csv','w') as w:
        text=replace_all(text,f_dic)
        text=replace_all(text,s_dic)
        w.write(text)
有人能帮我吗?或者更好的csv模块版本

谢谢, B0T

编辑

这是我回答后的最后代码。成功了

import re

def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text

f_dic = {'-':' '}
s_dic = {'  ':' ','   ':' ','SASD D':'SASD-D','DC W':'DC-W'}
t_dic = {'  ':' '}

with open('file1.csv','r') as f:
    text=f.read()
    text=replace_all(text,f_dic)
    text=replace_all(text,s_dic)
    text=replace_all(text,t_dic)
    text=re.sub(r'PROD\s(?=[1-9])',r'PROD',text)

with open('file2.csv','w') as w:
    w.write(text)

嗯。。。这对我很管用

我正在运行python 2.7.3

尝试以包含“123abc”的file1.csv开头的最小测试用例:

运行后,file2.csv包含x23dbc


也许我的测试用例太简单了。您能告诉我们您在file1.csv中看到了什么,您希望在file2.csv中看到什么,以及您在file2.csv中实际看到了什么吗。。。这对我很管用

我正在运行python 2.7.3

尝试以包含“123abc”的file1.csv开头的最小测试用例:

运行后,file2.csv包含x23dbc


也许我的测试用例太简单了。您能告诉我们您在file1.csv中看到了什么,您希望在file2.csv中看到什么,以及您在file2.csv中实际看到了什么吗?

实际上,除了“:”和regex替换r'PROD\s\d':r'PROD\d”之外,一切都正常。奇怪的我使用的是2.7.5不确定你的意思,你是说你原来的案例成功了,除了空间更换似乎不成功?你能给出你的输入、预期输出和实际输出吗?这是一个大文件。我想更改但未更改的字符串示例是:“DRE美国产品2”。我想去掉第一个单词后面的多余空格,并将“PROD 2”改为“PROD 2”。字符串上的replace方法不会处理正则表达式。字符串前面的
r
只是表示它是一个原始字符串文本,这里有更多说明:如果我是你,我会使用正则表达式模块:实际上,除了“”:“”和regex替换r'PROD\s\d':r'PROD\d之外,一切都正常。奇怪的我使用的是2.7.5不确定你的意思,你是说你原来的案例成功了,除了空间更换似乎不成功?你能给出你的输入、预期输出和实际输出吗?这是一个大文件。我想更改但未更改的字符串示例是:“DRE美国产品2”。我想去掉第一个单词后面的多余空格,并将“PROD 2”改为“PROD 2”。字符串上的replace方法不会处理正则表达式。字符串前面的
r
仅表示它是一个原始字符串文本,更多说明如下:如果我是您,我将使用正则表达式模块:
def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text

f_dic = {'a':'d'}
s_dic = {'1':'x'}

with open('file1.csv','r') as f:
    text=f.read()
    with open('file2.csv','w') as w:
        text=replace_all(text,f_dic)
        text=replace_all(text,s_dic)
        print text
        w.write(text)