用符号读取文件名(+和 - )

时间:2013-06-11 19:29:10

标签: python regex special-characters readfile

我有一个代码,可以通过以下行扫描文件夹中的文件名:

  fileNum = re.findall(r'T([0.-999.])\.txt',inputName)

这正确地读取了我使用此类型名称的文件:T12.txt,T13.3.txt。

现在我有一些文件也包含特殊字符+和 - 在文件名中:T13_B + 14.txt,T13_B-15.txt,T13_B0.0.txt等(唯一的变量是带符号的B因子) 。要将+符号包含为阅读的特殊字符,我将修改为:

  fileNum = re.findall(r'T13_B[\w+]([0.-99.])\.txt',inputName)

现在可以正确读取文件名中带有+的文件。所以我必须单独运行+和 - 。

问:如何在文件名中包含任何字符进行阅读(如此处[\ w +])?

3 个答案:

答案 0 :(得分:1)

因此,您尝试匹配表单Tdigits的所有内容,然后可能匹配其他字符.txt。所以只需将其作为正则表达式

fileNum = re.findall(r'^T\d+.+\.txt',inputName)

答案 1 :(得分:1)

您的常规常规表现将匹配每个输入字符串。你忘了掩盖点,所以你会接受每一个字符。

接受字符TB01,[...],9+,{ {1}},-您需要使用此正则表达式:

_

然而正如Reza在本案中所需的评论中指出的那样是另一个正则表达式:

^T[\dB\._+-]+\.txt$

这个文件接受所有以^T13_B[\d\.+-]+\.txt$ 为前缀的文件,后跟任意数字,点,加号和减号以及后缀T13_B

答案 2 :(得分:1)

[0.-99.]不是你的想法。它表示字符09.之一或.-9范围内的字符./0123456789。要匹配一个或两个数字,请使用\d{1,2}\d\d?。匹配\w字符或+-使用[\w+-]