enumerate指定行号

有时在对文件进行处理时会出现错误,文件比较小还好,但如果文件比较大,查找起来就比较麻烦,那要怎么获取出错

的行号呢?

这里用到了enumerate,通过enumerate来指定索引:

#!/usr/bin/env python
#coding:utf-8
#@Author:Andy
#Date: 2017/6/18

def parse_data(file_name):
	with open(file_name, ‘rt‘) as f:
		for line_no , line in enumerate(f, 1):
			fields = line.split()
			try:
				count = int(fields[0])
			except ValueError as e:
				print("line {} :parse error: {}".format(line_no, e))

if __name__ == ‘__main__‘:
	parse_data(‘parse_data.txt‘)

parse_data.txt文件内容如下:

当出错时,先打印行号,再输出错误信息:

这 里的enumerate可以通过第二个参数指定初始值,根据人的使用情况,这里指定为1:,默认情况

下为0

但是要注意,对于元组,在利用enumerate时,并不能自动对其进行解包,而是报错:

data = [ (1, 2), (3, 4), (5, 6), (7, 8) ]
for x, (m, n) in enumerate(data):
	print(x, (m,n))

0 (1, 2)
1 (3, 4)
2 (5, 6)
3 (7, 8)

解包:报错

for x, y, z in enumerate(data):
	print(x, y, z)

Traceback (most recent call last):
  File "C:\Program Files\Python35\lib\site-packages\IPython\core\interactiveshell.py", line 2869, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-11-138a8a540361>", line 1, in <module>
    for x, y, z in enumerate(data):
ValueError: not enough values to unpack (expected 3, got 2)
时间: 2024-10-13 05:53:14

enumerate指定行号的相关文章

awk指定行号和列号进行处理

这个做法是有问题的,会导致不应该有换行符的每一行都加上一个指定的换行符.待我再研究一下. 今天 在处理一堆SQL文件时遇到了这个问题. 首先是分隔符的问题,我遇到的两个分隔符一个是"`"(反引号)和"'"(单引号).这两个都是奇葩.先在这里指出. 分别是 awk -F"'" 'BEGIN{OFS="'\''"}{....}' filename awk -F"\`" 'BEGIN{OFS="`&qu

sed 指定行范围匹配(转)

sed -n '5,10{/pattern/p}' file sed是一个非交互性性文本编辑器,它编辑文件或标准输入 导出的文件拷贝.标准输入可能是来自键盘.文件重定向.字符串或变量,或者是一个管道文件.sed可以随意编辑小或大的文件,有许多sed命令用来编辑. 删除,并允许做这项工作时不在现场.sed一次性处理所有改变,因而变得很有效,对用户来说,最重要的是节 省了时间.sed必须通过行号和正则表达式指定要改变的文本行 sed怎样读取数据:sed从文件的一个文本行或从标准输入的几种格式中读取数

sed在指定行上删除和添加字符

欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/44020599 引言 我在一个项目中需要发布版本,两个客户的需求基本相同,只有是在一个fm34(消回音)模块上一个有该功能,另外一个没有.那么就存在在发版本的时候根据需要打开和关闭关于fm34相关的代码. 其中的一个就是是否需要inmod一个ko文件,我的处理是: 在脚本中有inmod该ko的一行代码,但是默认是被注释掉的 在给需要该功能的客户发布版本时,通过sed将改

sed 删除最后几行 和删除指定行 awk使用

sed 删除最后几行 和删除指定行 转载原文链接:http://blog.51cto.com/lspgyy/1305489 sed 想删除文件中的指定行,是可以用行号指定也可以用RE来匹配的. 删除指定的行[可以指定行号删除.匹配字符串来删除] [[email protected] ~]# cat -n seq.txt 1 ok i will help you 2 understand sed usage 3 how to use it 4 and we should use it in vie

SQL查询显示行号、随机查询、取指定行数据

1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用临时表,但在SQL Server2005中,使用ROW_NUMBER()非常方便. select row_number() over (order by UseriD) as rowNum,* from UserInfo 查询结果: 2.随机查询 有的时候我们需要查询出的数据是随机排序的,newid()函数在扫描每条记录时

linux 查找指定内容并显示指定行数的命令,显示匹配行和行号

grep -i "desktop-printing-0.19-20.2.el5.x86_64" -n -A 10 install.log linux 查找指定内容并显示指定行数的命令,显示匹配行和行号,布布扣,bubuko.com

mysql 行号 获取指定行数据

mysql 行号的实现 Select id,(@rowNum:[email protected]+1) as rowNo From first,(Select (@rowNum :=0) ) bOrder by first.id Desc 这样就可以实现mysql 的行号 获取指定行的数据可以使用limit 具体的使用如下: select * from first limit num,1 即可 mysql 行号 获取指定行数据,布布扣,bubuko.com

vi 之行号操作---显示行号、跳到指定行

1.设置行号显示 esc ->:->set nu 2.跳到指定行 esc-> 123gg 3. 进入命令模式 ?一:在冒号下输入 vim vi 在命令模式中 使用 d(版本不同 使用dd ) 可删除 插入模式时光标当前行 命令模式下 输入:d ,后回车 二:不在冒号下输入: 1)把光标移动到要复制的行上,按yy (复制当前行) 2)把光标移动到要复制的位置 ,按p (粘贴到指定行) 3)把光标移动到要复制的位置 ,按dd(删除当前行) 显示行号: 命令模式下 输入:set nu 移动光标

行号是按指定的逻辑顺序为查询结果集中的行分配的连续整数

IF OBJECT_ID('TESTTBL') IS NOT NULL DROP TABLE TESTTBL;GO CREATE TABLE TESTTBL(    empid VARCHAR(10) NOT NULL primary key,    mgrid VARCHAR(10) NOT NULL,    qty INT NOT NULL) INSERT INTO TESTTBL (empid,mgrid,qty) VALUES('A','Z',300),('B','X',100),('C