Python从字符串中获取多个字符

2024-10-02 14:25:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个查询,它返回我们更大应用程序中特定应用程序的用户安全设置。在

设置表的人将所有的安全设置都放在一个字段中,而不是定义各个字段,因此我得到了一个如下所示的blob:

NNYYNYNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNY

每一个都对应于单独的设置。 我知道如何使用字符串切片来获取各个字段。在

我想知道的是,如果我返回这个blob,有没有办法让15、25和48个字符?我还可以设置查询来执行substr()并获得我想要的字符,我只是想知道是否有一种python方法可以做到这一点。我更希望不必设置多个查询,因为变化实际上是无穷无尽的,例如上面的示例是我必须使用的大约20个不同应用程序之一。在


Tags: 方法字符串用户应用程序示例定义切片字符
2条回答

要快速提取,可以执行以下操作:

a, b, c = your_str[14], your_str[24], your_str[47]

或者您可以编写一个函数:

^{pr2}$

您可以使用namedtuples给您的安全策略命名值。例如,假设您的字符串是三个字符,每个位置的含义是readwriteexecute。此外,我假设您的字符串Y和{}分别表示yes和no。因此,您可以这样做:

from collections import namedtuple
Security = namedtuple('Security', ['read','write','execute'])
policy_string = 'YYN'   # read = Yes, write = Yes, execute = No
policy = Security(*[c for c in policy_string])
print policy

会打印出来的

^{pr2}$

然后可以通过索引或符号名访问每个设置。例如:

>>> policy[0]
'Y'
>>> policy.read
'Y'

显然,您将用所有48个安全策略的文本描述来调整这个示例。在

https://docs.python.org/2.7/library/collections.html#collections.namedtuple

相关问题 更多 >