Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在csv文件中使用python替换字符串模式_Python - Fatal编程技术网

如何在csv文件中使用python替换字符串模式

如何在csv文件中使用python替换字符串模式,python,Python,我是python新手。如何将字符串,“替换为,{和,替换为>,在.csv文件中包含多行 这是我的.csv文件的内容 Name, Degree,Some, Occupation, Object Mr. A,"B.A, M.A",123,"ags,gshs",ass Mr. ABC,"B.A, M.A",231,"ags,gshs",asas Mr. D,"BB.A, M.A",44,"ags,gshs",asas Mr. G,"BBBB.A, M.A",12,"ags,gshs",asasasa

我是python新手。如何将字符串
,“
替换为
,{
替换为
>,
在.csv文件中包含多行

这是我的.csv文件的内容

Name, Degree,Some, Occupation, Object
Mr. A,"B.A, M.A",123,"ags,gshs",ass
Mr. ABC,"B.A, M.A",231,"ags,gshs",asas
Mr. D,"BB.A, M.A",44,"ags,gshs",asas
Mr. G,"BBBB.A, M.A",12,"ags,gshs",asasasa
Mr. S,"B.A, MMM.A",10,"ags,gshs",asasas
Mr. R,"B.A, M.A",11,"ags,gshs",asasas
Mr. T,"B.A, M.A",12,"ags,gshs",asasa
Mr. DD,"B.A, M.A",13,"ags,gshs",asasas
所以我的输出是这样的

 Name, Degree,Some, Occupation, Obejct
 Mr. A,{B.A, M.A},123,{ags,gshs},ass
 Mr. ABC,{B.A, M.A},231,{ags,gshs},asas
 Mr. D,{BB.A, M.A},44,{ags,gshs},asas
 Mr. G,{BBBB.A, M.A},12,{ags,gshs},asasasa
 Mr. S,{B.A, MMM.A},10,{ags,gshs},asasas
 Mr. R,{B.A, M.A},11,{ags,gshs},asasas
 Mr. T,{B.A, M.A},12,{ags,gshs},asasa
 Mr. DD,{B.A, M.A},13,{ags,gshs},asasas

使用
file.read()
打开文件后,可以使用
replace(新旧)
替换所需的字符串。请记住,由于字符串
、“
”、
包含引号,因此必须在引号前加上一个
\
,以显示它们是字符串的一部分

编辑:您提到的注释可以将字符串括在
'
中。如果执行此操作,则不需要将
\
放在引号之前。例如,
“,\”
“,”
都是有效字符串

data = ""

with open("/path/to/file.csv") as file:
     data = file.read().replace(",\"", ",{").replace("\",", "},")

with open("/path/to/new_file.csv") as file:
     file.write(data)

如果你只需要一次,你可以像这样使用熊猫:

import pandas as pd

data1 = '''\
Name,Degree,Some,Occupation,Object
Mr. A,"B.A, M.A",123,"ags,gshs",ass
Mr. ABC,"B.A, M.A",231,"ags,gshs",asas
Mr. D,"BB.A, M.A",44,"ags,gshs",asas
Mr. G,"BBBB.A, M.A",12,"ags,gshs",asasasa
Mr. S,"B.A, MMM.A",10,"ags,gshs",asasas
Mr. R,"B.A, M.A",11,"ags,gshs",asasas
Mr. T,"B.A, M.A",12,"ags,gshs",asasa
Mr. DD,"B.A, M.A",13,"ags,gshs",asasas'''

df = pd.read_csv(pd.compat.StringIO(data1), sep=',', dtype=object)
#df = pd.read_csv('input.csv', sep=',', dtype=object)  # Use this row for real application

df['Degree'] = '{'+df['Degree']+'}'
df['Occupation'] = '{'+df['Occupation']+'}'

# Create custom output
out = '\n'.join([','.join(df.columns), '\n'.join(','.join(i) for i in df.values)])

with open('output.csv') as f:
    f.write(out)
您可以使用解包:

import csv
with open('filename.csv') as f:
  data = filter(None, list(csv.reader(f)))
  with open('filename.csv', 'w') as f1:
    write = csv.writer(f1)
    write.writerows([data[0]]+[[a, '{'+b+'}', c, '{'+d+'}', e] for a, b, c, d, e in data[1:]])
输出:

Name, Degree,Some, Occupation, Object
Mr. A,{B.A, M.A},123,{ags,gshs},ass
Mr. ABC,{B.A, M.A},231,{ags,gshs},asas
Mr. D,{BB.A, M.A},44,{ags,gshs},asas
Mr. G,{BBBB.A, M.A},12,{ags,gshs},asasasa
Mr. S,{B.A, MMM.A},10,{ags,gshs},asasas
Mr. R,{B.A, M.A},11,{ags,gshs},asasas
Mr. T,{B.A, M.A},12,{ags,gshs},asasa
Mr. DD,{B.A, M.A},13,{ags,gshs},asasas
尝试:

def find_replace(csv_路径、搜索字符、替换为):
文本=打开(csv_路径,“r”)
text=''.join([i代表文本中的i])。替换(
搜索\u个字符,将\u替换为)
x=打开(csv_路径,“w”)
x、 书写线(文本)
x、 关闭()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
csv_path=“path/to/csv/file.csv”
搜索字符=',“'
将_替换为=',{'
查找替换(csv路径、搜索字符、替换为)
搜索字符=“,”
将_替换为='},'
查找替换(csv路径、搜索字符、替换为)
上面的代码打开文件,向其中写入一些数据,然后关闭它

或者,如果您更喜欢
list
s以及
with
语句,它将注意调用给定对象的
\uuuuuuuu退出
函数,即使代码中发生了错误

def find_replace(csv_路径、搜索字符、替换为):
s_one,s_two=搜索字符
r_一,r_二=用
打开(csv_路径)作为文件:
data=file.read().replace(s_-one,r_-one)。replace(s_-two,r_-two)
打开(csv_路径,“w”)作为文件:
文件写入(数据)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
csv_path=“path/to/csv/file.csv”
搜索字符=[',“,”,“,”]
将_替换为=[',{','}']
查找替换(csv路径、搜索字符、替换为)
使用
with
语句的主要优点是,它可以确保关闭文件,而不必注意嵌套块的退出方式


测试并在您的示例上运行良好。

如果python不是必需的,您还可以使用
sed
awk
等工具修改CSV文件。或者对包含双引号的值使用单引号:
,“