这是我第一次写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