有字节:
b = b'X:\xce\xa4\x91start\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0ende\x85\n\xe0'
有必要使用正则表达式从那里提取解码部分,然后处理解码部分(即字符串)。取出零件不是问题。re.Match问题是解码返回的所有组。
例子:
import re
b = b'X:\xce\xa4\x91start\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0ende\x85\n\xe0'
m = re.search(b"start(?P<decodable>.+)end", b)
print(m['decodable']) # b'\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0'
print(m[0]) # b'start\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0end'
print(m[1]) # b'\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0'
m = decode_match(m, encoding='utf-8') # Как реализовать подобное отображение?
# Ожидаемый результат:
print(m['decodable']) # строка
print(m[0]) # startстрокаend
print(m[1]) # строка
可以有任意多的内部decode_match调用。bytes.decode
试图迭代m和解码,但是TypeError: 're.Match' object is not iterable
为了实验,我尝试解码零组:
m[0] = m[0].decode()
但TypeError: 're.Match' object does not support item assignment
另一种变体:
返回
re.Match具有解码组的对象,但是:所以所有组都可以在一行中解码:
re.Match但是仍然不可能分配回什么。到目前为止,我已经能够投入以下功能:
但它返回
dict而不是re.Match. 对于我的任务,这是合适的,但仍然很有趣如何re.Match通过解码组获得它。