你好,我有一根这样的绳子:

AdvancedHTMLParser (8.0.1)\nappdirs (1.4.3)\nbeautifulsoup4 (4.6.0)\nchardet (3.0.4)\nchrome-gnome-shell (0.0.0)\ncupshelpers (1.0)\ncycler (0.10.0)\nCython (0.27.3)

我想把它分成一个元组列表。

我只能用换行符把字符串分开,但我不知道如何正确地抓住括号里的数字等

EDIT :
I am trying to parse pip list local
 def get_installed_modules(self):
    data = subprocess.check_output(["pip", "list", "--local"])
    result = [tuple(line.replace('(', '').replace(')', '').split())
              for line in data.splitlines()]
    print(result)

我有一个项目,我不能只是分割字符串,但它需要一个字节状的对象。。。
TypeError: a bytes-like object is required, not 'str'

最佳答案

Option 1
如果您从pip获得这些输出,则可以使用pip.operations.freeze以编程方式执行此操作-

from pip.operations import freeze

modules = list(
    map(lambda x: x.split('=='), freeze.freeze(local_only=True))
)

print(modules)

[['aiodns', '1.1.1'],
 ['aiohttp', '1.2.0'],
 ['appdirs', '1.4.0'],
 ['appnope', '0.1.0'],
 ['argparse', '1.4.0'],
...

Option 2
您也可以使用get_installed_distributions,取自here
import pip

modules = []
for i in pip.utils.get_installed_distributions():
    modules.append((i.key, i.version))

print(modules)

[('pytreebank', '0.2.4'),
 ('cssselect', '1.0.1'),
 ('numba', '0.36.0.dev0+92.g2818dc9e2'),
 ('llvmlite', '0.0.0'),
 ('yarl', '0.8.1'),
 ('xlwt', '1.3.0'),
 ('xlrd', '1.1.0'),
 ...
]

Option 3
-
import pip
pip.main(['list', 'local'])

关于python - 在python中解析点子列表/点子卡住的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47869800/

10-12 20:10