Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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
Python 读取带有带引号的csv文件_Python_Python 3.x_Pandas_Csv - Fatal编程技术网

Python 读取带有带引号的csv文件

Python 读取带有带引号的csv文件,python,python-3.x,pandas,csv,Python,Python 3.x,Pandas,Csv,我无法正确读取带有熊猫的csv文件。我已经为我的问题寻找了解决方案,但没有找到 所以,我的文件包含关于轨迹的信息,但它的结构有点特殊。这是标题结构,大多数行都尊重它 artist, trackname, albumname, tracknum, year, mp3genre Anton Cosmo, Cry, The In Between, 12, 2010, Electro Rock 但有些行的结构与此不同: artist, trackname, albumname, tracknum, y

我无法正确读取带有熊猫的csv文件。我已经为我的问题寻找了解决方案,但没有找到

所以,我的文件包含关于轨迹的信息,但它的结构有点特殊。这是标题结构,大多数行都尊重它

artist, trackname, albumname, tracknum, year, mp3genre
Anton Cosmo, Cry, The In Between, 12, 2010, Electro Rock
但有些行的结构与此不同:

artist, trackname, albumname, tracknum, year, mp3genre
Anne Garner, "Home, Outbound","Long Journey Here, 1, 2011, Electronica  
我尝试了很多方法将这个csv文件读入熊猫数据框,但没有成功。我想:

df = pd.read_csv("songs.csv", quotechar="\"")
这行得通,但它给了我这样一句话:

artist                                Anne Garner
trackname    "Home, Outbound" , Long Journey Here
albumname                                       1
tracknum                                     2011
year                                  Electronica
mp3genre                                      NaN
而不是:

artist                                Anne Garner
trackname                          Home, Outbound
albumname                       Long Journey Here                   
tracknum                                        1
year                                         2011
mp3genre                              Electronica
你知道一种正确阅读的方法吗


如前所述,您可以在阅读时尝试将
替换为
。一种方法是使用
csv.reader()
,在将数据传递给Pandas之前预解析数据。例如:

import pandas as pd
import csv
import io

with open('songs.csv') as f_input:
    data = [next(csv.reader(io.StringIO(line.replace('""', '"')))) for line in f_input]

print(pd.DataFrame(data[1:], columns=data[0]))
这将给你:

artist trackname相册name tracknum year mp3genre
安东·科斯莫(Anton Cosmo)在2010年12月12日和2010年12月12日之间哭泣
1 Anne Garner Home,出境长途跋涉1 2011 Electronica

这是真正的结构吗?你有一句永远不会结束的引语。在“长途跋涉……我确实犯了一个错误”,真正的结构是“安妮·加纳”,“家,外游”,“长途跋涉”,“1”,“2011”,“Electronica”,所以你有
“家,外游”
没有引语?字符串开头和结尾有两个引号?您可以尝试替换
中出现的每一个
。@joaoavf提到的方法值得一试,但除非您知道
,否则无法保证它会起作用“
dos不会出现在任何字段中。如果您控制要解析的文件的生成,那么首先可以避免写入双引号。