【问题标题】:Spliting string with lookahead/lookbehind assertions for empty string match [duplicate]使用前瞻/后向断言拆分字符串以进行空字符串匹配[重复]
【发布时间】:2016-09-19 21:54:31
【问题描述】:

我正在尝试拆分重命名一些难看的变量名(例如):

 In[1]: import re
        ugly_names = ['some-Ugly-Name', 'ugly:Case:Style', 'uglyNamedFunction']
        new_names = []

 In[2]: patt = re.compile(r'(?<=[a-z])[\-:]?(?=[A-Z])')

 In[3]: for name in ugly_names:
            loc_name = patt.split(name)
            new_names.append("_".join(s.lower() for s in loc_name))

        print(new_names)

Out[3]: ['some_ugly_name', 'ugly_case_style', 'uglynamedfunction']

我的模式有什么问题?为什么它与空字符串不匹配,或者我遗漏了什么?

p.s.:Python 的regex 是否可以拆分空字符串,或者我应该使用其他一些函数和.groups()

【问题讨论】:

  • Python re.split 不能用空字符串分割。使用 PyPi 正则表达式模块。

标签: python regex split


【解决方案1】:

不是直接回答问题,而是另一种方式 - 使用inflection library(但必须单独处理:):

>>> import inflection
>>>
>>> [inflection.underscore(name.replace(":", "_")) for name in ugly_names]
['some_ugly_name', 'ugly_case_style', 'ugly_named_function']

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2015-05-12
    相关资源
    最近更新 更多