我有一个.txt文件,是一个电路的网表图,它的形式大概是这样的:
** 我是.txt网表图生成于2014年11月11日 信来砍
电容A A的电容值 A的位置
电容B B的电容值 B的位置
电感C C的电感值 C的位置
电阻D D的电阻值 D的位置
(这是一个空行什么都没有)
二极管E E的尺寸 E的位置
二极管F F的尺寸 F的位置
三极管G G的尺寸 G的位置
我需要用python读取这个.txt文件,然后
1 删除所有以两个星星开头的行(电路的网表图.txt文件的注释是两个星星);
2 删除所有空行;
3 删除所有既以“二极管”开头、又在“三极管”所在行正上方的行。所以,我需要用python生成的文件是这样的:
电容A A的电容值 A的位置
电容B B的电容值 B的位置
电感C C的电感值 C的位置
电阻D D的电阻值 D的位置
二极管E E的尺寸 E的位置
三极管G G的尺寸 G的位置
这3个操作我都想请教大家。这是我写的python:
row_count = 0
row_count_next = 0
list_row = []
f_in = file(CKT_R, "r")
f_in_split = f_in.read().splitlines()
f_out = file(CKT_W, "w")
for row in f_in_split:
row_count_next = row_count + 1
row_count = row_count + 1
if row.startswith(''):
删掉这个row
if (row.startswith('') and row.endswith('')):
删掉这个row
if f_in_split[row_count_next].startswith('三极管')):
……
问题1是:row.startswith('')中的两个星星,python不认为它们只是普通符号,而是类似*arg或者arg之类的表示省略的符号……
问题2是:row.startswith('') and row.endswith(''),空行在python中如何表示?
问题3是:我用row_count_next = row_count + 1来让python读下一行,但是假设这个.txt文件只有3行,python会试图去读第4行、然后报出一个out of index的error……
请问这3个问题如何解决?谢谢!
1 直接用下面语句,startswith的参数是一个正则表达式,**匹配的是一个或多个字符,详见正则表达式
row[:2] == '**'2 匹配字符串可用下面的表达式,去掉左右两端的空白后判断长度
if len(row.strip()) == 0: #this is a empty line pass3 不要再遍历列表中删除它的元素,用列表生成表达式######谢谢了很及时!######谢谢楼上两位了!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。