Python 读取带有带引号的csv文件
我无法正确读取带有熊猫的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
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不会出现在任何字段中。如果您控制要解析的文件的生成,那么首先可以避免写入双引号。