【问题标题】:How to use re.split for commas and periods?如何将 re.split 用于逗号和句点?
【发布时间】:2017-05-21 17:21:14
【问题描述】:

我有多个字符串,其中的单词用逗号或句点分隔:

string = ['apple,pear,grapes,carrot.cabbage,veggies.fruit,yard']

我想根据逗号和句点来拆分:

string = ['apple','pear','grapes','carrot','cabbage','veggies','fruit','yard']

我只知道re.split如何使用一个条件:

re.split(',',string)

这不会拆分中间有句点的单词。如何拆分整个字符串,以便在中间有逗号或句点时拆分单词?

【问题讨论】:

  • 分割参数是一个正则表达式;使用r"[.,]"

标签: python regex split


【解决方案1】:
>>> import re
>>> string = 'apple,pear,grapes,carrot.cabbage,veggies.fruit,yard'
>>> re.split(',|\.',string)
['apple', 'pear', 'grapes', 'carrot', 'cabbage', 'veggies', 'fruit', 'yard']

这使用更改运算符| 拆分为,.(必须转义为\.)。

也可以用字符类来写:

>>> re.split('[,.]',string)
['apple', 'pear', 'grapes', 'carrot', 'cabbage', 'veggies', 'fruit', 'yard']

但这不太通用,因为这两个字符都不能用短语代替。

【讨论】:

  • 你也可以使用字符类
  • [,.] 你不必转义点。对于单字符选择,方括号是首选选项
【解决方案2】:
import re
string = 'apple,pear,grapes,carrot.cabbage,veggies.fruit,yard'
arr = re.split('[,.]', string)
print(arr)

【讨论】:

  • 你不需要在字符类中转义句点
【解决方案3】:

如果您的字符串变量中有很多元素,您可以使用 itertools 模块中的 chain.from_iterable 来处理您的列表

from itertools import chain

string = ['apple,pear,grapes,carrot.cabbage,veggies.fruit,yard']
final = list(chain.from_iterable(re.split(',', k) for k in string))
print(final)

输出:

['apple', 'pear', 'grapes', 'carrot.cabbage', 'veggies.fruit', 'yard']

您只能更改re.split() 中的模式以在',''.' 之间拆分:

from itertools import chain

string = ['apple,pear,grapes,carrot.cabbage,veggies.fruit,yard']
final = list(chain.from_iterable(re.split('[,.]', k) for k in string))
print(final)

输出:

['apple', 'pear', 'grapes', 'carrot', 'cabbage', 'veggies', 'fruit', 'yard']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2011-05-27
    • 2017-04-23
    相关资源
    最近更新 更多