python - 如果我通常将“#”作为分隔符但部分作为标题的一部分,我该怎么做才能将 csv 文件正确导入 Python?
问题描述
我要将此csv 文件导入 Python 数据帧,具有分隔符“#{1}”,因此它计为 13 列,但我有几行出现此错误:
“ParserError:第 803 行中预期有 13 个字段,看到 14。错误可能是由于使用多字符分隔符时忽略引号引起的。”
问题是这些令人不安的线看起来像这样 "Revolution#9#9118#"9118"#"350000"#15.11.2002###Thriller/Suspense##""##7,3#252"
其中“Revolution #9”的意思是“Revolution №9”,只是电影的标题,而不是分隔符,尽管程序不理解这一点,因此会计算一个过多的列。老师禁止编辑原始的csv文件来修复它。仅使用代码。
是否有一些代码可以在 Python 中编辑这个 csv 文件,用另一个替换电影标题中的这个标志?或者其他解决这个问题的方法,好吗?
这是我使用的代码,以防万一
import pandas as pd
movies=pd.read_csv('movies.csv',
sep="#{1}",
names=["Title", "US Gross", "Worldwide Gross", "Production Budget", "Release Date", "Distributor", "Source", "Major Genre", "Creative Type","Director","Rotten Tomatoes Rating","IMDB Rating","IMDB Votes"],
engine='python',
skiprows=1)
movies = movies.replace(to_replace='"', value="", regex=True)
movies
解决方案
我认为 csv.DictReader 模块会帮助你。这是一个未经测试的示例如何使用此模块
from csv import DictReader
with open(file_name, 'r') as csv_file:
fieldnames = ["Title", "US Gross"] # Add all youre rows here
csv_lines = csv.DictReader(csv_file, fieldnames=fieldnames, delimiter=',')
for line in csv_lines:
# Example how to access the column 'Title'
title = line['Title']
# here you can replace the content
推荐阅读
- google-sheets - 如何使用 Google 表格将任务类型平均分配给员工
- javascript - Material UI - 滑块事件处理程序
- c++ - 签名和无符号字符在 C++ 中不起作用
- python - 搜索后如何使用python单击YouTube中的第一个频道?
- c++ - 模拟方法并在执行后捕获其输出参数之一
- php - apache24/PHP8 windows 10 localhost 无法连接
- networking - 在相互身份验证 (mTLS) 中绕过证书验证的可能性
- jquery - 在窗口调整大小时设置相等高度不起作用
- php - 错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证在 file_get_contents 中失败
- javascript - 被点击的链接必须保持活跃