gpt4 book ai didi

python - 根据 Python 中的模式拆分字符串

转载 作者:太空狗 更新时间:2023-10-30 00:28:57 25 4
gpt4 key购买 nike

我有很长的字符串,例如

“123 - 鞋类,5678 - 服装、配饰和奢侈品,9876 - 休闲产品”

“321 - 服装和配饰,4321 - 服装和配饰 > 手袋、钱包和箱子,187 - 服装和配饰 > 鞋履”

我想根据“一个数字、一个空格、一个破折号、一个空格、一些字符串直到下一个数字、一个空格、一个破折号、一个空格或字符串结尾”的模式拆分它们。请注意,该字符串可能包含逗号、& 符号、“>​​”和其他特殊字符,因此对它们进行拆分将不起作用。我认为 Python 中有一种方法可以根据正则表达式进行拆分,但我很难形成它。

我对正则表达式有非常入门的了解。我可以为数字和字母数字字符串形成正则表达式,但我不知道如何指定“在下一个数字开始之前获取所有内容”。


更新:预期输出:

第一种情况:

[“123 - 鞋类”、“5678 - 服装、配饰和奢侈品”、“9876 - 休闲产品”]

第二种情况:

[“321 - 服饰与配饰”、“4321 - 服饰与配饰 > 手袋、钱包和箱子”、“187 - 服饰与配饰 > 鞋履”]

最佳答案

这是模式,首先是一些数字,所以我们使用 [0-9]+ 后跟字符串和特殊字符,如 & - >,因此我们可以使用[a-zA-Z\-&>]+:

>>> str_ = "123 - Footwear, 5678 - Apparel, Accessories & Luxury Goods, 9876 - Leisure Products"
>>> re.findall(r'(?is)([0-9]+[a-zA-Z \-&>,]+)', str_)
['123 - Footwear, ',
'5678 - Apparel, Accessories & Luxury Goods, ',
'9876 - Leisure Products']

你在OP中提到的另一个字符串

>>> str_ = "321 - Apparel & Accessories, 4321 - Apparel & Accessories > Handbags, Wallets & Cases, 187 - Apparel & Accessories > Shoes"
>>> re.findall(r'(?is)([0-9]+[a-zA-Z \-&>,]+)', str_)
['321 - Apparel & Accessories, ',
'4321 - Apparel & Accessories > Handbags, Wallets & Cases, ',
'187 - Apparel & Accessories > Shoes']

关于python - 根据 Python 中的模式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51534312/

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