如何将拆分中的单个列表项视为字符串



这是我第一次写Python。我有一个类似于以下内容的字符串:

证书(n(: 389429732C9805 36124C3CF2C18 F2C187AA389429

n 是包含多少证书(仅供人类阅读,我不解析它(

我想拆分字符串,首先删除标签,然后分离每个证书。所以这就是我的工作(请注意,这是我已经拆分的较长字符串的一部分(:

for subitem in item.split("): ")[1:]:
    for idx, cert in enumerate(subitem.split(" ")):

虽然它有效,但当我总是只有一个项目时,拥有外部循环似乎很愚蠢,但我也不想在固定位置拆分,因为n值的长度可能不同。我还注意到,当我尝试将每个字母作为一行时,使用 item.split("): ")[1:][0] 单独获取每个字母(这不是我想要的(。

以下尝试失败:

for idx, cert in enumerate(item.split("): ")[1][0].split(" ")):

如何只使用最后一个元素并删除外部循环?我可以将内部循环全部放在一行中吗?

如果示例格式正确,您可以按空格拆分一次

for idx, cert in enumerate(item.split()[2:]):
   print(idx, cert)

结果

0 389429732C9805
1 36124C3CF2C18
2 F2C187AA389429

演示

你的尝试到底是怎么失败的?我已经从您的帖子中复制粘贴了代码,它可以工作:

>>> item = "Certificates(n): 389429732C9805 36124C3CF2C18 F2C187AA389429"
>>> for idx, cert in enumerate(item.split("): ")[1:][0].split(" ")):
...    print 'Item no', idx, 'is', cert
...
Item no 0 is 389429732C9805
Item no 1 is 36124C3CF2C18
Item no 2 is F2C187AA389429
你也可以

使用 str.partition 将字符串分解成 ('Certificates(n', '): ', '389429732C9805 36124C3CF2C18 F2C187AA389429') ,然后你可以用 split() 拆分最后一个字符串:

s = "Certificates(n): 389429732C9805 36124C3CF2C18 F2C187AA389429"
for idx, cert in enumerate(s.partition('): ')[-1].split()):
    print(idx, cert)

哪些输出:

0 389429732C9805
1 36124C3CF2C18
2 F2C187AA389429

最新更新