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

时间:2018-01-05 13:17:03

标签: python string python-3.x

这是我第一次编写任何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(" ")):

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

3 个答案:

答案 0 :(得分:1)

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

<a class="btn"><i class="glyphicon glyphicon-floppy-disk"></i>Old devices</a>

结果

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

demo

答案 1 :(得分:1)

你的尝试是如何失败的?我已经从您的帖子中复制了代码并且它可以正常运行:

>>> 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

答案 2 :(得分:0)

您还可以使用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