【问题标题】:split a string after it finds a "," and an integer在找到“,”和整数后拆分字符串
【发布时间】:2021-05-10 21:46:46
【问题描述】:

例如考虑一个字符串:

str1 = '1=apple, 2=orange, mango, 3=grape'
#split string by ,
chunks = str1.split(', ')

如果我运行代码,它会给我一个输出: '1=苹果'、'2=橙子'、'芒果'、'3=葡萄'

但我希望我的输出是: '1=苹果', '2=橙子, 芒果', '3=葡萄'

【问题讨论】:

  • 你应该看看正则表达式和re.split 它允许你使用正则表达式进行拆分

标签: python regex split


【解决方案1】:

使用regex module,您可以通过积极的前瞻来精确建模。这就是说,以逗号和空格分隔,后跟一个数字:

import re

str1 = '1=apple, 2=orange, mango, 3=grape'

re.split(r', (?=\d)', str1)
# ['1=apple', '2=orange, mango', '3=grape']

【讨论】:

  • 它是如何工作的? (虽然我试过了,但是)如果我没记错的话,\d 是数字,但是你把= 放在\d 之前。我想这意味着(例如), =3 而不是, 3=
  • @MuhdMairaj, (?= 是前瞻的正则表达式语法(只是巧合,您的字符串中还有一个等号)。意思是“跟随”。所以(?=\d) 表示后跟一个数字。整个正则表达式显示为“一个逗号和一个空格 [后跟] 一个数字”。这可以防止它在第二个逗号上拆分(后面没有数字)。
  • 哦,我明白了,谢谢,现在明白了。我没有过多地使用 re 模块,所以我对此感到困惑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 2011-05-31
相关资源
最近更新 更多