pandas保存字符串时如何不多添加引号?

在Pandas中保存CSV文件时,默认会使用引号来表示字符串的开始和结束,这会导致字符串中原有的引号变成双引号,改变了原始字符串的内容。如果希望保存CSV文件时不改变字符串的内容,可以采取以下几个措施:


1. 保存CSV时指定quote=None
在调用`.to_csv()`方法保存CSV文件时,将`quote=None`指定为参数,这样在保存CSV文件时不会添加任何引号:

python
df.to_csv('data.csv', sep='\t', index=False, quote=None)


2. 指定转义字符escapechar
对于包含CSV分隔符(默认为`,)的字符串,指定escapechar='\'`参数,这会在特殊字符前添加转义符`\`:

python 
df.to_csv('data.csv', sep='\t', index=False, escapechar='\\')


3. 保存CSV前替换字符串中的引号
对于包含引号的字符串,可以在保存CSV文件前使用`str.replace()`方法替换引号:

python
df['string'] = df['string'].str.replace('"', '')
df.to_csv('data.csv', sep='\t', index=False) 


4. 读取CSV时也指定quote=None
在读取CSV文件时,同样指定`quote=None`,这样在读取过程中也不会将引号解释为字符串的开始/结束标记:

python
df = pd.read_csv('data.csv', sep='\t', quote=None)


举个例子:

python
df = pd.DataFrame({'string': ['this is a "string"', 'another \'string\'']})

# Quote=None,不添加引号
df.to_csv('data.csv', sep='\t', index=False, quote=None)   

# 读取时也指定Quote=None
df = pd.read_csv('data.csv', sep='\t', quote=None)  

print(df)  
   string  
0  this is a "string"    
1  another \'string\'


可以看到,CSV文件保存和读取时,字符串内容没有任何改变。
 

你可能感兴趣的:(python,pandas,python,数据分析)