gpt4 book ai didi

python - 解析可变长度数据

转载 作者:行者123 更新时间:2023-11-28 18:06:43 26 4
gpt4 key购买 nike

我使用的是 Python 3,我对 RegEx 比较陌生。我正在努力想出一个解决以下问题的好方法。我有一个包含多组信息的文本字符串(可以包括换行符等)。

例如:

TAG1/123456 TAG2/ABCDEFG HISTAG3/A1B1C1D1 QWERTY TAG4/0987654321 
TAG5/THE CAT SAT ON THE MAT MYTAG6/FLINTSTONE
TAG7/99887766AA

我需要将其解析为以下内容

TAG1/123456

TAG2/ABCDEFG

HISTAG3/A1B1C1D1 QWERTY

TAG4/0987654321

TAG5/THE CAT SAT ON THE MAT

MYTAG6/FLINTSTONE

TAG7/99887766AA

我似乎不知道如何处理可变长度标签:( TAG3 和 TAG5我总是最终捕获下一个标签,即

TAG5/THE CAT SAT ON THE MAT TAG6

实际上,TAG 本身也是可变的。大多数是 3 个字符后跟“/”,但不是全部。有些是 4、5 和 6 个字符长。但是所有的后面都有'/',除了第一个之外的所有都在前面有一个空格

更新信息我更新了示例以显示这些变量标签。但要明确一个标签可以是 1-8 个字母字符,前面有一个空格,并以 '/' 结尾标记后的数据可以是一个或多个单词(字母数字),定义为标记的“/”之后的所有数据,直到下一个标记的开头或字符串的结尾

如有任何指点,我们将不胜感激。

最佳答案

我认为这是实现您想要的一种方法:

import re

s = """TAG1/123456 TAG2/ABCDEFG TAG3/A1B1C1D1 QWERTY TAG4/0987654321
TAG5/THE CAT SAT ON THE MAT TAG6/FLINTSTONE
TAG7/99887766AA"""
r = re.compile(r'\w+/.+?(?=$|\s+\w+/)')
tags = r.findall(s)
print(*tags, sep='\n')

输出:

TAG1/123456
TAG2/ABCDEFG
TAG3/A1B1C1D1 QWERTY
TAG4/0987654321
TAG5/THE CAT SAT ON THE MAT
TAG6/FLINTSTONE
TAG7/99887766AA

重要的位是非贪婪限定符 +? 和先行 (?=$|\s+\w+/)

关于python - 解析可变长度数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53088887/

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