gpt4 book ai didi

python - 如何使用python3提取样本前面的文字?

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:29 24 4
gpt4 key购买 nike

这是我拥有的示例记录。

Record ID:           9211
User name: Administrator first
User principal name: Administrator@example.com
When created: 1999-12-23 3:8:52
When changed: 2000-06-10 4:8:55
Account expires: Never

我想从值前面提取数据。输出必须如下所示:

9211
Administrator first
Administrator
first
Administrator@example.com
1999-12-23 3:8:52
2000-06-10 4:8:55
Never

单词Administrator first必须如上所示提取和分隔。
我尝试了以下操作以从样本中提取 User name 但没有得到任何输出。

re.findall(r'User name:           (\w+)', i)

请告诉我如何实现这一目标?应该只有提取的数据,而不是在数据之前给出的空间。

请告诉我如何实现这一目标?

最佳答案

你可以使用字典理解

import re

string = """
Record ID: 9211
User name: Administrator first
User principal name: Administrator@example.com
When created: 1999-12-23 3:8:52
When changed: 2000-06-10 4:8:55
Account expires: Never
"""

rx = re.compile(r'^(?P<key>[^:\n]+):\s*(?P<value>.+)', re.MULTILINE)
result = {m.group('key'): m.group('value') for m in rx.finditer(string)}
print(result)

之后,只需向您的字典询问 ie result['User name']。参见 a demo on ideone.com .


如果您有 多次出现的条目,并且条目始终具有相同的格式(即它们以 Record ID 开头并以 结尾Account expires),你可以用另一个表达式和一个类来包裹它,这样你就可以得到一个 字典列表:

import re
string = """
Record ID: 9211
User name: Administrator first
User principal name: Administrator@example.com
When created: 1999-12-23 3:8:52
When changed: 2000-06-10 4:8:55
Account expires: Never

Record ID: 9390
User name: Administrator first
User principal name: Administrator@example.com
When created: 1999-12-23 3:8:52
When changed: 2000-06-10 4:8:55
Account expires: Never
"""

class Analyzer:
''' Parses the input string and returns matched entries '''
rx_parts = re.compile(r'^Record ID:(?s:.+?)^Account expires:.+', re.MULTILINE)
rx_entries = re.compile(r'^(?P<key>[^:\n]+):\s*(?P<value>.+)', re.MULTILINE)
result = list()

def __init__(self, input_string = None):
self.result = [{m.group('key'): m.group('value')
for m in self.rx_entries.finditer(part.group(0))}
for part in self.rx_parts.finditer(input_string)]

def query(self, key=None, value=None):
try:
subset = [item for item in self.result if item[key] == value]
except KeyError:
subset = []
return subset

a = Analyzer(string)
admin = a.query(key = 'Record ID', value='9390')
print(admin)

关于python - 如何使用python3提取样本前面的文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43910359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com