我有一个要解析的列表(但我正在寻找一种通用的方法来解析这样的列表):
dev-libs/icu-63.1-r1 alpha amd64 arm arm64 ia64 ppc ppc64 x86 hppa s390
dev-libs/icu-layoutex-63.1 alpha amd64 ia64 ppc ppc64 x86 hppa sparc
dev-lang/perl-5.28-r1 s390
virtual/ruby_gems-0.3_pre24 amd64 x86
有时会出现这种情况,因为它会尝试解析架构列表,比如从alpha
开始直到行尾,但我真的想忽略包版本之后的所有内容,而在版本之后保留空间存在的可能性。你知道吗
我的代码如下:(打印只是为了调试)
for line in args.list:
print(line)
package_category = re.search(r'((?<==)\w+-\w+|\w+-\w+|\w+)', line).group(0)
print(package_category)
package_name = re.search(r'(?<=/)[a-z]+.[a-z]+', line).group(0)
print(package_name)
package_version = re.search(r'(?<=-)\d+.\d-*\w*\s?', line).group(0)
我希望这样做:
package\u category变量应包含如下类别:
dev-libs
dev-lang
virtual
包名称应包含包名称,如:
icu
icu-layoutex
perl
ruby_gems
软件包版本:
63.1-r1
63.1
0.3_pre24
剩下的应该忽略不计
目前,我突然以某种方式点击了archistructures列表,结果是:
dev-libs/icu-63.1-r1
dev-libs
icu
alpha
alpha
Traceback (most recent call last):
File "./repomator.py", line 47, in <module>
package_name = re.search(r'(?<=/)[a-z]+.[a-z]+', line).group(0)
AttributeError: 'NoneType' object has no attribute 'group'
这就是你想要的:
Demo
说明:
代码:
输出:
相关问题 更多 >
编程相关推荐