首页 > 解决方案 > 我想使用正则表达式拆分文件的扩展名

问题描述

item 是一个类似 "./test/test1.csv" 的字符串。我想将项目更改为“test1”。我写了代码,

item=re.search('./*.csv',item)

但是,“1.csv”是项目。我真的不明白为什么会发生这样的事情。我应该怎么做才能做我理想的事情?

标签: python

解决方案


通常,您需要标准库中的os.path模块来获取这种文件名。

import os.path
print(os.path.splitext(os.path.basename('./test/test1.csv'))[0])

在您的正则表达式版本中,请记住.匹配任何字符(不仅仅是句点),x*匹配任意数量的 x(甚至为零),如果模式匹配字符串中的任何位置,re.search将返回 true:您的正则表达式匹配每当文件名在第一个或第二个字符之后的任何位置包含字母“csv”时。正确的正则表达式实现可能是

import re
print(re.search(r'/([^/.]+)\.[^/]+$', './test/test1.csv')[1])

(匹配斜杠、至少一个既不是句点也不是斜杠的字符、句点、至少一个不是斜杠的字符和字符串的结尾)。(恕我直言os.path,更具可读性和可维护性。)


推荐阅读