如何在python中使用正则表达式提取每行中需要的信息

如题,有"temp.txt"文件,内容如下:218996%S15173928K38024Kfgapp_108com.tencent.qq2189934%S14191436... 如题,有"temp.txt"文件,内容如下:
21899 6% S 15 173928K 38024K fg app_108 com.tencent.qq
21899 34% S 14 191436K 50888K fg app_108 com.tencent.qq
21899 49% S 14 183928K 41584K fg app_108 com.tencent.qq
21899 28% S 15 176984K 40240K fg app_108 com.tencent.qq
21899 6% S 15 177004K 40448K fg app_108 com.tencent.qq
21899 6% S 14 176048K 40564K fg app_108 com.tencent.qq
21899 10% S 14 176196K 40472K fg app_108 com.tencent.qq
21899 9% S 14 176232K 40712K fg app_108 com.tencent.qq
21899 12% S 14 176288K 40820K fg app_108 com.tencent.qq
21899 10% S 14 176288K 40820K fg app_108 com.tencent.qq
21899 12% S 16 179376K 40904K fg app_108 com.tencent.qq
如何提取出每行的百分比数值、两个内存占用值,并存储至'result.csv'中呢?
(如第一行提取“6%”,“173928”,“38024”三个值)
求大神指点!谢谢!
展开
 我来答
cydfli
2014-01-05 · TA获得超过406个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:207万
展开全部
>>> s='''21899   6% S    15 173928K  38024K  fg app_108  com.tencent.qq
21899  34% S    14 191436K  50888K  fg app_108  com.tencent.qq
21899  49% S    14 183928K  41584K  fg app_108  com.tencent.qq
21899  28% S    15 176984K  40240K  fg app_108  com.tencent.qq
21899   6% S    15 177004K  40448K  fg app_108  com.tencent.qq
21899   6% S    14 176048K  40564K  fg app_108  com.tencent.qq
21899  10% S    14 176196K  40472K  fg app_108  com.tencent.qq
21899   9% S    14 176232K  40712K  fg app_108  com.tencent.qq
21899  12% S    14 176288K  40820K  fg app_108  com.tencent.qq
21899  10% S    14 176288K  40820K  fg app_108  com.tencent.qq
21899  12% S    16 179376K  40904K  fg app_108  com.tencent.qq'''
>>> open('a.txt','w').write(s)
>>> f=open('a.txt')
>>> f.read()
'21899   6% S    15 173928K  38024K  fg app_108  com.tencent.qq\n21899  34% S    14 191436K  50888K  fg app_108  com.tencent.qq\n21899  49% S    14 183928K  41584K  fg app_108  com.tencent.qq\n21899  28% S    15 176984K  40240K  fg app_108  com.tencent.qq\n21899   6% S    15 177004K  40448K  fg app_108  com.tencent.qq\n21899   6% S    14 176048K  40564K  fg app_108  com.tencent.qq\n21899  10% S    14 176196K  40472K  fg app_108  com.tencent.qq\n21899   9% S    14 176232K  40712K  fg app_108  com.tencent.qq\n21899  12% S    14 176288K  40820K  fg app_108  com.tencent.qq\n21899  10% S    14 176288K  40820K  fg app_108  com.tencent.qq\n21899  12% S    16 179376K  40904K  fg app_108  com.tencent.qq'
>>> pprint.pprint(map(lambda x:re.findall('\d+? +?(\d+%) +?S +?\d+? +?(\d+K) +?(\d+K)',x),s.split('\n')))
[[('6%', '173928K', '38024K')],
 [('34%', '191436K', '50888K')],
 [('49%', '183928K', '41584K')],
 [('28%', '176984K', '40240K')],
 [('6%', '177004K', '40448K')],
 [('6%', '176048K', '40564K')],
 [('10%', '176196K', '40472K')],
 [('9%', '176232K', '40712K')],
 [('12%', '176288K', '40820K')],
 [('10%', '176288K', '40820K')],
 [('12%', '179376K', '40904K')]]
>>> pprint.pprint(map(lambda x:re.findall('\d+? +?(\d+%) +?S +?\d+? +?(\d+K) +?(\d+K)',x),open('a.txt').read().split('\n')))
[[('6%', '173928K', '38024K')],
 [('34%', '191436K', '50888K')],
 [('49%', '183928K', '41584K')],
 [('28%', '176984K', '40240K')],
 [('6%', '177004K', '40448K')],
 [('6%', '176048K', '40564K')],
 [('10%', '176196K', '40472K')],
 [('9%', '176232K', '40712K')],
 [('12%', '176288K', '40820K')],
 [('10%', '176288K', '40820K')],
 [('12%', '179376K', '40904K')]]
>>>
自由de王国
2014-01-05 · TA获得超过1066个赞
知道小有建树答主
回答量:661
采纳率:50%
帮助的人:838万
展开全部
import re

file_object = open('temp.txt')
try:
str = file_object.read( )
finally:
file_object.close( )
result = re.findall("(\d+%) S\s+\d+ (\d+)K\s+(\d+)K",str)
f = open("test.csv","w")
for line in result:
f.write("%s,%s,%s\n"%(line[0],line[1],line[2]))
f.close()
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式