gpt4 book ai didi

python - 将字符偏移量转换为字节偏移量(在 Python 中)

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:06 25 4
gpt4 key购买 nike

假设我有一堆 UTF-8 格式的文件,我将这些文件以 unicode 格式发送到外部 API。 API 对每个 unicode 字符串进行操作并返回一个包含 (character_offset, substr) 元组的列表。

我需要的输出是每个找到的子字符串的开始和结束字节偏移量。如果幸运的话,输入文本仅包含 ASCII 字符(使字符偏移量和字节偏移量相同),但情况并非总是如此。如何找到已知开始字符偏移量和子字符串的开始和结束字节偏移量?

我自己已经回答了这个问题,但期待有其他更健壮、更高效和/或更具可读性的解决方案来解决这个问题。

最佳答案

我会使用字典将字符偏移量映射到字节偏移量然后在其中查找偏移量来解决这个问题。

def get_char_to_byte_map(unicode_string):
"""
Generates a dictionary mapping character offsets to byte offsets for unicode_string.
"""
response = {}
byte_offset = 0
for char_offset, character in enumerate(unicode_string):
response[char_offset] = byte_offset
byte_offset += len(character.encode('utf-8'))
return response

char_to_byte_map = get_char_to_byte_map(text)

for begin_offset, substring in api_response:
begin_offset = char_to_byte_map[character_offset]
end_offset = char_to_byte_map[character_offset + len(substring)]
# do something

与您的解决方案相比,此解决方案的性能在很大程度上取决于输入的大小和涉及的子字符串的数量。本地微基准测试表明,对文本中的每个字符进行编码所花费的时间是一次对整个文本进行编码所花费时间的大约 1000 倍。

关于python - 将字符偏移量转换为字节偏移量(在 Python 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23999702/

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