python - 查找文件中第一个唯一出现的位置

标签 python regex

在日志文件中,有 .csv 文件,我只需要查找该文件名和文件扩展名的一次出现。

示例: Abcde.csv

我有下面这一行,但它找到文件路径在“导入文件./”和“.”字样内的所有 csv 文件。它也没有考虑“。”句子中的句号并打印下一行。

for result in re.findall(‘Importing file ./(.*?).’, fp.read(), re.S):

有什么方法可以只获取带有文件扩展名的文件名。

当前结果:

/user/path/abcde.csv
Line number :1235

期望:

abcde.csv

更新- 当前行:

行号 12983:导入文件/user/path/abcde.csv。

最佳答案

对于此示例字符串

Line number 12983: Importing file /user/path/abcde.csv.

您可以使用:

\bImporting file (?:/[^/\n]+)*/([^/\n]+\.csv)\.
  • \b导入文件 按字面匹配
  • (?: 非捕获组
    • /[^/\n]+ 匹配 / 和除 / 或换行符之外的 1 个或多个字符
  • )* 关闭非捕获组并可选择重复
  • / 匹配 /
  • ( 捕获组 1
    • [^/\n]+\.csv 匹配除 / 或换行符之外的 1 个以上字符,然后匹配 .csv<
  • )\. 关闭组 1 并匹配尾随点

Regex demo

示例

for result in re.findall(r"\bImporting file (?:/[^/\n]+)*/([^/\n]+\.csv)\.", fp.read()):
    print(result)

输出

abcde.csv

关于python - 查找文件中第一个唯一出现的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70105967/

相关文章:

c++ - 如何使用与 Boost 库匹配的 Perl 样式内存正则表达式

python - 无法在 NAT 路由器后面接收 UDP 数据包

C# Regex 组多个捕获

c# - 行首的正则表达式 - 或 - 句子中的最后一个数字

regex - 如何将段落拆分为由句点 (.) 分隔的句子,除非句点是缩写的一部分?

正则表达式检查字符串是否只有空格

python - 在批处理文件中休眠

python - 如何在交互模式下将带有 matplotlib 的 Python 代码嵌入到 C 中?

python - 使用 Python 将 HTML 表格保存到 excel 中时出现问题

python - PyMongo 仅当它不存在时才创建索引