Python 3.x Python3.7从csv中的特定点开始读取
嘿,我真的需要帮助。我已经尝试了1个小时来寻找python的解决方案,但没有找到 我正在使用Python 3.7 我的输入是客户提供的文件-我无法更改它。其结构如下所示: 它以非CSV格式的随机文本开始,从文件其余部分的第3行开始为CSV格式Python 3.x Python3.7从csv中的特定点开始读取,python-3.x,csv,Python 3.x,Csv,嘿,我真的需要帮助。我已经尝试了1个小时来寻找python的解决方案,但没有找到 我正在使用Python 3.7 我的输入是客户提供的文件-我无法更改它。其结构如下所示: 它以非CSV格式的随机文本开始,从文件其余部分的第3行开始为CSV格式 text line text line text line or nothing Enter [csv文件开始]“列名称1”,“列名称2”。。直到6点 “价值1”、“价值2”。。。直到6号-持续多行 我想提取前3行以创建纯CSV文件,但找不到只针对
text line
text line
text line or nothing
Enter
[csv文件开始]“列名称1”,“列名称2”。。直到6点
“价值1”、“价值2”。。。直到6号-持续多行
我想提取前3行以创建纯CSV文件,但找不到只针对特定行范围执行此操作的代码。这似乎也是错误的解决方案,因为我认为从某一点开始阅读应该是可能的。
然后我认为split()是解决方案,但它不适用于这种格式。这些值有时是数字、日期或字符串。不能使用seek()方法,因为它们的启动方式不同。
现在,我的听写器将第一行作为索引,因此其余部分呈现为混乱状态
import csv
import pandas as pd
from prettytable import PrettyTable
with open(r'C:\Users\Hans\Downloads\file.csv') as csvfile:
csv_reader = csv.DictReader (r'C:\Users\Hans\Downloads\file.csv', delimiter=',')
for lines in csvfile:
print (lines)
如果已经找到python的一些答案,请链接它,我无法找到它。
非常感谢你的帮助。非常感谢。如果您知道要跳过的行数,那么只需打开文件并读取那么多行,然后将文件句柄传递给Dictreader,它就会读取其余的行
导入csv
跳过行=3
打开('test.dat')作为我的\u文件:
对于范围内的(跳过行):
打印(“跳过行:”,my_file.readline(),end=“”)
打印(“CSV数据”)
csv\u reader=csv.DictReader(我的文件)
对于csv_读取器中的行:
打印(行)
文件
this is junk
this is more junk
last junk
name,num,symbol
chris,4,$
adam,7,&
david,5,%
输出
skiping line: this is junk
skiping line: this is more junk
skiping line: last junk
###CSV DATA###
OrderedDict([('name', 'chris'), ('num', '4'), ('symbol', '$')])
OrderedDict([('name', 'adam'), ('num', '7'), ('symbol', '&')])
OrderedDict([('name', 'david'), ('num', '5'), ('symbol', '%')])
我将坚持使用pandas选项,因为文档中明确说明skiprows参数允许跳过n行。我用@Chris Doyle提供的示例进行了尝试(将其保存到名为line_file.csv的文件中),效果如预期
import pandas as pd
f = pd.read_csv('line_file.csv', skiprows=3)
输出
为什么不使用open正常打开文件,然后调用readlines 3次,然后将文件句柄传递给dictreader以吃掉文件的其余部分?也许您可以尝试使用pandas。您可以检查pd.read\u csv,并将跳过行设置为3。它将开始从中读取您的文件there@IvanCalderon谢谢你的评论,但是它跳过了行而不是行。据我在文档中看到的,Pandas没有理由忽略行。你能澄清行和行之间的区别吗?行是一种垂直对齐方式,就像excel中的A B C一样,从上到下排列。一条线是一个水平的对齐方式,如excel 1 2 3中所示,所以如果您愿意,可以从左向右排列。使用skiprow时,它将看到第一行只有一个项目,然后调整文件的其余部分。也许我监督了一些事情,但当我尝试它时,它并没有解决我的问题。谢谢你的评论。我会在周四或周六尝试,然后再回到你的评论。抱歉耽搁了。在我的初学者看来,熊猫解决方案更干净。因此,我决定坚持下去。感谢您的评论和时间:)我同意您@Ivan的观点,因为OP gas是import pandas声明的一部分,如果他们计划将csv的其余部分作为pandas数据帧加载,那么这个答案就更干净了。好的,很抱歉回复太晚。我尝试了这个代码,确实奏效了。现在我有了不同的问题,但这些问题已经被讨论过了——虽然在@Hans中没有解决,但我很高兴它起了作用。请您考虑对该问题进行投票。“感谢您的反馈!记录了声誉低于15的人的投票,但不要更改公开显示的帖子分数”
name num symbol
0 chris 4 $
1 adam 7 &
2 david 5 %