免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 864 | 回复: 0
打印 上一主题 下一主题

请教:怎样用python读取文件之后,处理在下一行、空行、和*星星 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-11 15:59 |只看该作者 |倒序浏览
我有一个.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个问题如何解决?谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP