我有一个代码,可以通过以下行扫描文件夹中的文件名:
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 +])?
答案 0 :(得分:1)
因此,您尝试匹配表单Tdigits
的所有内容,然后可能匹配其他字符.txt
。所以只需将其作为正则表达式
fileNum = re.findall(r'^T\d+.+\.txt',inputName)
答案 1 :(得分:1)
您的常规常规表现将匹配每个输入字符串。你忘了掩盖点,所以你会接受每一个字符。
接受字符T
,B
,0
,1
,[...],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+-]
。