我正在尝试以以下格式解析go图元文件:
require (
github.com/cheggaaa/pb v1.0.28
github.com/coreos/go-semver v0.2.0 // indirect
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e // indirect
github.com/dustin/go-humanize v1.0.0
github.com/fatih/color v1.7.0
...
)
如何使用正则表达式获取括号和 之间的数据? (否则,这个毫无疑问的问题将根本不存在)。我曾经尝试过与split()
一起玩,但是到目前为止失败了。
答案 0 :(得分:1)
@rdas的建议[l.strip() for l in file.readlines()[1:-1]]
将起作用。但实际上,您应该只使用正则表达式。更简单。
答案 1 :(得分:0)
您可以阅读全部内容,将其分成几行,然后切开第一行和最后一行:
with open(metafile) as f:
requirements = f.read().splitlines()[1:-1]
使用with
打开文件可确保在作用域结束时正确关闭文件。
答案 2 :(得分:0)
这是应该执行的代码。只要这些块中没有其他“)”,它将复制“ requiere(”和“)”之间的所有行。
数据文件:
random stuff
require (
github.com/cheggaaa/pb v1.0.28
github.com/coreos/go-semver v0.2.0 // indirect
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e //indirect
github.com/dustin/go-humanize v1.0.0
github.com/fatih/color v1.7.0
...
)
random stuff
输出文件:
github.com/cheggaaa/pb v1.0.28
github.com/coreos/go-semver v0.2.0 // indirect
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e //indirect
github.com/dustin/go-humanize v1.0.0
github.com/fatih/color v1.7.0
...
代码:
f = open('data', 'r')
f2 = open('out', 'w')
toggle = False
for line in f:
if 'require (' in line:
toggle = True
continue
if toggle:
if ')' in line:
toggle = False
else:
f2.write(line)
f.close()
f2.close()