首页 新闻 会员 周边 捐助

如何用python实现去掉文本中的行序号?

0
悬赏园豆:10 [已解决问题] 解决于 2012-10-08 14:24

1 #!/usr/bin/env python
2
3 from cgi import FieldStorage
4 from os import environ
5 from cStringIO import StringIO 
6 from urllib import quote, unquote
7 from string import capwords, strip, split, join
8
9 class AdvCGI(object):
10
11 header = 'Content-Type: text/html\n\n'
12 url = '/py/advcgi.py'
13

例如将1,2,3,,,,,13,,去掉,用python脚本处理?求解!

forwhy的主页 forwhy | 初学一级 | 园豆:160
提问于:2012-10-08 11:07
< >
分享
最佳答案
2
#-*- coding: utf-8 -*-

import re

s = '''
1 #!/usr/bin/env python
2
3 from cgi import FieldStorage
4 from os import environ
5 from cStringIO import StringIO  
6 from urllib import quote, unquote
7 from string import capwords, strip, split, join
8
9 class AdvCGI(object):
10
11   header = 'Content-Type: text/html\n\n'
12   url = '/py/advcgi.py'
13

'''

LINE_PATTERN =r'\s*\d+\s?(.*)'

def func(text):
    c = re.compile(LINE_PATTERN)
    lists = []
    lines = text.split('\n')
    for line in lines:
        r = c.findall(line)
        if r:
            lists.append(r[0])

    return '\n'.join(lists)

if __name__ == '__main__':
    l = func(s)
    print l
    
收获园豆:10
无路可逃 | 初学一级 |园豆:194 | 2012-10-08 11:29
LINE_PATTERN =r'\s*\d+\s?(.*)'能给我详细讲讲这个正则表达式吗?   \s 是匹配任何空白字符,*匹配前面的正则出现0次或多次,
\d匹配数字,+表示数字出现一次或多次。
  我不明白的是,r = c.findall('2 v=[] \n') 后为什么r=['v=[] '],它是如何实现将数字去掉的?

forwhy | 园豆:160 (初学一级) | 2012-10-08 15:33

@forwhy: 

LINE_PATTERN =r'\s*\d+\s?(.*)' 这个正则的最终获取结果就是括号 (.*) 中的内容,前面的正则你既然看懂了,那后面的 (.*) 不包括前面的数字也就好懂了

无路可逃 | 园豆:194 (初学一级) | 2012-10-08 15:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册