4

我正在尝试读取文本文件并返回所有不以 # 开头的行。在 python 中,我可以很容易地使用列表理解列表

with open('file.txt') as f:
     lines = [l.strip('\n') for l in f.readlines() if not re.search(r"^#", l)]

我想通过 Groovy 完成同样的事情。到目前为止,我有以下代码,非常感谢任何帮助。

lines = new File("file.txt").readLines().findAll({x -> x ==~ /^#/ })
4

1 回答 1

5

在 groovy 中,您通常必须使用collect来代替列表推导。例如:

new File("file.txt").readLines().findAll({x -> x ==~ /^#/ }).
    collect { it.replaceAll('\n', '') }

请注意,readLines()已经去掉了换行符,所以在这种情况下没有必要。

对于搜索,您还可以使用以下grep()方法:

new File('file.txt').readLines().grep(~/^#.*/)
于 2013-01-24T23:55:37.207 回答