python 逐行读取txt并保存到适当的数据结构

问题描述:想在要把一个txt文件逐行分析并将有用数据保存在适当的数据结构此txt文件中,如果行开头是“#”则为注释行,忽略;如果行开头是“:”则为有效行,需要将所有有效行... 问题描述 :想在要把一个txt文件逐行分析并将有用数据保存在适当的数据结构 此txt文件中,如果行开头是“#”则为注释行,忽略;如果行开头是“:”则为有效行,需要将所有有效行按顺序保存到适当的数据结构,谢谢了! 展开
 我来答
lix_xu
2011-10-18 · TA获得超过1213个赞
知道小有建树答主
回答量:823
采纳率:0%
帮助的人:693万
展开全部
from __future__ import with_statement
import re

data_re = re.compile(ur'^:(\w+)\s+\("(.+?)"\)$')
data = []
with open('xxx.txt') as f:
for line in f:
if line.startswith(':'):
found = data_re.findall(line.strip())
if found:
data.append(found[0])

print data
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuezy3
2011-10-18 · TA获得超过106个赞
知道答主
回答量:34
采纳率:0%
帮助的人:38.8万
展开全部
请问,你用的是python3x 还是python2x啊?因为python3与python2对字符串有一些改变。
你的txt文本中有除了ascii之外的字符吗?
追问
2.5, 有效行类似于 :FilePath ("C:\\TQ\\Edk2DailyTest\\Log\\TmDaily.log")  然后我还需要FilePath 和 c:\\.....log  保存到一个数据结构中 然后每一行都是类似这样的 将每一行分析后保存到合适的数据结构中,我想用列表的列表 不知如何? 谢谢
追答
网友lix_xu的程序中with语句并非必须,因为这里是只对文件进行读。其他地方基本可用。
对于LZ你的追问,说想将有效行保存到列表的列表中是否合适,答案在于你想日后怎么访问这些数据。例如,假如你想日后通过FilePath来访问c:\\...log,那么用字典好一点。如果日后想用有效行的行号来访问,则列表的列表也可以。如果日后不对c:\\...log的内容进行修改的话,使用网友lix_xu的程序就挺好。他的程序最后得到的是元组的列表。对于网友lix_xu的正则表达式'^:(\w+)\s+\("(.+?)"\)$'中第二个括号内,也即(.+?)这一部分,想问一下,使用(.+)不就可以吗?为什么还要再加一个?这个数量词呢?
鉴于lix_xu的程序生成的结果是元组的列表,我这里的程序就生成字典吧。
imoprt re
prt=re.compile(r'^\s*:(\w+)\s+\("(.+)"\)\s*')
mydata={}
myfile=open('xxx.txt')
for line in myfile:
found=prt.findall(line)
if found
mydata[found[0][0]]=found[0][1]
#现在mydata中就是你要的数据了,组织成FilePath ---> c:\\...log的形式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-10-18
展开全部
python中#本来就是行注释
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式