在Python中将文件名拆分为单词和数字

时间:2010-05-04 01:38:51

标签: python regex string

以下代码将字符串拆分为单词列表但不包含数字:

    txt="there_once was,a-monkey.called phillip?09.txt"
    sep=re.compile(r"[\s\.,-_\?]+")
    sep.split(txt)

['there', 'once', 'was', 'a', 'monkey', 'called', 'phillip', 'txt']

此代码为我提供了单词和数字,但仍然包含“_”作为有效字符:

re.findall(r"\w+|\d+",txt)
['there_once', 'was', 'a', 'monkey', 'called', 'phillip', '09', 'txt']

我需要在任何一段代码中更改以获得所需的结果:

['there', 'once', 'was', 'a', 'monkey', 'called', 'phillip', '09', 'txt']

2 个答案:

答案 0 :(得分:2)

这是一个应该做的快速方法:

re.findall(r"[a-zA-Z0-9]+",txt)

这是另一个:

re.split(r"[\s\.,\-_\?]+",txt)

(你只需要转义连字符,因为它在字符类中有特殊含义)

答案 1 :(得分:2)

对于示例案例,

sep = re.compile(r"[^a-zA-Z0-9]+")
sea.split(txt)

应该有效。要将数字与单词分开,请尝试

re.findall(r"[a-zA-Z]+|\d+", txt)