Python替换Rubys grep?

时间:2012-09-16 21:48:53

标签: python ruby

abc=123
dabc=123
  abc=456
  dabc=789
    aabd=123

从上面的文件我需要找到以abc =开头的行(空格无关紧要)

在ruby中我会把它放在一个数组中并执行

matches = input.grep(/^\s*abc=.*/).map(&:strip)

我是Python中的一个完全noob,甚至说我是一个新的Python开发人员太多了。

也许有一种更好的“Python方式”,即使没有点击也可以做到这一点?

我需要解决问题的平台上提供的Python版本是2.6

当时没有办法使用Ruby

2 个答案:

答案 0 :(得分:5)

with open("myfile.txt") as myfile:
    matches = [line.rstrip() for line in myfile if line.lstrip().startswith("abc=")]

答案 1 :(得分:1)

在Python中,您通常会使用列表推导,其if子句可以完成您使用Ruby grep完成的任务:

import sys, re
matches = [line.strip() for line in sys.stdin
           if re.match(r'^\s*abc=.*', line)]