gpt4 book ai didi

Python正则表达式剪切模式字符串

转载 作者:行者123 更新时间:2023-12-01 09:11:55 25 4
gpt4 key购买 nike

我有包含如下信息的文件:

 id                      : 1234567890
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 9876543210
6)address : street number
data : [42|63] [42|62]

id : 14785236984
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 987555555555
6)address : street number
data : [44|67] [21|1024]
id : 987456321
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 98744444444
6)address : street number
data : [26|1089] [21|1524]

我想用正则表达式划分这些信息,因为并非所有 block 都是独立的使用 new line('\n') 所以我很难用我尝试用正则表达式做的 split 来做到这一点:

^[\s]id[\w\W\s\S\t]+(\[\d{1,}\|\d{1,}\]{,2})$

但它需要我想要的所有 block ,结果应该是:

  1. 第一组

     id                      : 1234567890
    1)client_name : Abcd
    2)family_name : Efgh
    5)phon_number : 9876543210
    6)address : street number
    data : [42|63] [42|62]
  2. 第二组

     id                      : 14785236984
    1)client_name : Abcd
    2)family_name : Efgh
    5)phon_number : 987555555555
    6)address : street number
    data : [44|67] [21|1024]
  3. 第三组

    id                      : 987456321
    1)client_name : Abcd
    2)family_name : Efgh
    5)phon_number : 98744444444
    6)address : street number
    data : [26|1089] [21|1524]

最佳答案

此正则表达式会将输入文本拆分为以 id 开头的组(如果您想保留空格,可以省略 .strip())。 Explanation of this regexp here

data="""
id : 1234567890
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 9876543210
6)address : street number
data : [42|63] [42|62]

id : 14785236984
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 987555555555
6)address : street number
data : [44|67] [21|1024]
id : 987456321
1)client_name : Abcd
2)family_name : Efgh
5)phon_number : 98744444444
6)address : street number
data : [26|1089] [21|1524]
"""

import re
from pprint import pprint

pprint([i.strip() for i in re.findall(r'id\s*:.*?(?=id|\Z)', data, flags=re.DOTALL)], width=120)

输出将是 3 个字符串的列表(我在它们之间放置换行符以便清楚地看到它):

['id                      : 1234567890\n'
' 1)client_name : Abcd\n'
' 2)family_name : Efgh\n'
' 5)phon_number : 9876543210\n'
' 6)address : street number\n'
' data : [42|63] [42|62]',

'id : 14785236984\n'
' 1)client_name : Abcd\n'
' 2)family_name : Efgh\n'
' 5)phon_number : 987555555555\n'
' 6)address : street number\n'
' data : [44|67] [21|1024]',

'id : 987456321\n'
' 1)client_name : Abcd\n'
' 2)family_name : Efgh\n'
' 5)phon_number : 98744444444\n'
' 6)address : street number\n'
' data : [26|1089] [21|1524]']

关于Python正则表达式剪切模式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51589769/

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