Python导入含逗号及双引号的CSV文件遇Unicode错误,求正确方法
解决CSV导入问题
1. 先搞定语法错误
你写的代码里quotechar='"'是HTML里的双引号转义写法,Python根本不认,直接换成quotechar='"'就能解决那个Unicode转义报错。
2. 正确导入并调整数据格式
如果用Pandas(毕竟你要的是DataFrame),可以这么写:
import pandas as pd # 读取CSV,指定引号字符和分隔符,自动忽略引号内的逗号 df = pd.read_csv( '你的文件路径.csv', quotechar='"', delimiter=',', skipinitialspace=True ) # 把share列里的逗号换成小数点,转成数值类型 df['share'] = df['share'].str.replace(',', '.').astype(float) # 把liste列里的逗号换成空格 df['liste'] = df['liste'].str.replace(',', ' ')
要是用Python内置的csv模块再转成DataFrame,代码是这样:
import csv import pandas as pd data_rows = [] with open('你的文件路径.csv', 'r', encoding='utf-8') as file: csv_reader = csv.reader( file, quotechar='"', delimiter=',', skipinitialspace=True ) # 读取表头 headers = next(csv_reader) # 逐行处理数据 for row in csv_reader: # 处理share列的逗号转小数点 row[2] = row[2].replace(',', '.') # 处理liste列的逗号转空格 row[3] = row[3].replace(',', ' ') data_rows.append(row) # 转成DataFrame并调整数据类型 df = pd.DataFrame(data_rows, columns=headers) df['votes'] = df['votes'].astype(int) df['share'] = df['share'].astype(float)
关键参数说明
quotechar='"':告诉解析器,双引号包裹的内容是一个完整字段,里面的逗号不会被当作分隔符拆分。skipinitialspace=True:自动忽略分隔符后面的空格(避免字段开头多空格)。
处理完之后就能得到你想要的DataFrame:
region votes share liste 0 1 1453 45.16 ABC 1 2 5489 54.17 BCD DEF 2 3 5486 32.00 WSE
内容的提问来源于stack exchange,提问作者MG Fern
相关产品推荐
相关产品推荐

