使用单引号作为quotechar调用pd.read_csv触发SyntaxError报错求解
读取含单引号包裹带逗号值的文本文件时quotechar参数报错问题
我需要读取一个结构如下的文本文件(以.txt存储,格式类似csv):
'column A', 'column b', 'column c', 'valueA', 'valueb', 'valuec,d', 'valueA', 'valueb', 'valuecd', 'valueA', 'valueb', 'valuecd', 'valueA', 'valueb', 'valuec,d'
要求读取时忽略valuec,d中的逗号,将该值存入单个列。我知道可以通过quotechar参数实现,但使用单引号时始终触发SyntaxError: incomplete input错误,尝试了三种写法:
第一种:
import pandas as pd DF = pd.read_csv(r'Myfilepath', sep = ',', quotechar =''')
第二种:
DF = pd.read_csv(r'Myfilepath', sep = ',', quotechar ='''')
第三种:
DF = pd.read_csv(r'Myfilepath', sep = ',', quotechar ="'")
请问哪里操作有误?
问题原因与解决方法
三种写法都存在Python字符串语法错误:
- 第一种写法
quotechar ='':前两个单引号会被解析为空字符串,第三个单引号成为未闭合的字符串标记,导致语法不完整。 - 第二种写法
quotechar =''':三个连续单引号是Python多行字符串的起始符号,缺少对应的结束标记,触发语法错误。 - 第三种写法
quotechar ="'":"是HTML的双引号转义字符,Python代码中无法识别,直接写会导致语法错误。
正确的写法有两种:
- 用双引号包裹单引号作为参数值:
import pandas as pd DF = pd.read_csv(r'Myfilepath', sep=',', quotechar="'", skipinitialspace=True)
- 用单引号加转义符表示单引号:
DF = pd.read_csv(r'Myfilepath', sep=',', quotechar='\'', skipinitialspace=True)
另外建议加上skipinitialspace=True参数,因为文件中逗号后带有空格,这个参数会自动忽略分隔符后的空格,避免列名和值出现多余的前导空格(比如避免读取到' column A'这种带空格的列名)。
内容的提问来源于stack exchange,提问作者Bending Rodriguez
相关产品推荐
相关产品推荐

