gpt4 book ai didi

python - 使用数组中的多个分隔符拆分字符串 (Python)

转载 作者:太空狗 更新时间:2023-10-30 02:08:04 25 4
gpt4 key购买 nike

给定一个分隔符数组:

columns = ["Name:", "ID:", "Date:", "Building:", "Room:", "Notes:"]

和一些列留空的字符串(并且有随机空白):

input = "Name:      JohnID:123:45Date:  8/2/17Building:Room:Notes:  i love notes"

我怎样才能得到这个:

["John", "123:45", "8/2/17", "", "", "i love notes"]

我试过简单地删除子字符串以查看我可以从那里去哪里,但我仍然卡住了

import re
input = re.sub(r'|'.join(map(re.escape, columns)), "", input)

最佳答案

通过在中间插入 (.*) 使用列表生成正则表达式,然后使用 strip 删除空格:

import re

columns = ["Name:", "ID:", "Date:", "Building:", "Room:", "Notes:"]
s = "Name: JohnID:123:45Date: 8/2/17Building:Room:Notes: i love notes"

result = [x.strip() for x in re.match("".join(map("{}(.*)".format,columns)),s).groups()]

print(result)

产量:

['John', '123:45', '8/2/17', '', '', 'i love notes']

strip 部分可以由正则表达式处理,代价是更复杂的正则表达式,但更简单的整体表达式:

result = re.match("".join(map("{}\s*(.*)\s*".format,columns)),s).groups()

更复杂:如果字段数据包含正则表达式特殊字符,我们必须转义它们(这里不是这种情况):

result = re.match("".join(["{}\s*(.*)\s*".format(re.escape(x)) for x in columns]),s).groups()

关于python - 使用数组中的多个分隔符拆分字符串 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45466819/

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