gpt4 book ai didi

regex - 在 python 中使用带有列表理解的正则表达式

转载 作者:行者123 更新时间:2023-12-05 08:32:08 25 4
gpt4 key购买 nike

我有以下代码,它将所有 csv 文件名存储在特定文件夹的列表中

import pandas as pd
import re
import os

files = os.listdir('.')
filename=[filename for filename in files if filename.endswith('.csv')]

但是,在我的文件夹中,我有两种类型的 csv 文件,一种以 _20.cvs(或者可能是 _18.csv、_01.csv)结尾,另一种以 _Raw.csv 结尾;

但是我只需要第一个类型存储在我的列表中。我知道正则表达式可以帮助我解决这个问题,所以我进行了一些谷歌搜索,并得出了以下代码,但它似乎不起作用,有人可以提供建议吗?

filename = [re.search(r'^\d{2}.csv'),filename).group(0) for filename in files] 

最佳答案

您需要删除 ^(因为它匹配字符串位置的开头),在模式末尾添加 $(以确保匹配位于字符串的末尾)并转义点(否则, 匹配除换行符之外的任何字符)。

请注意,在访问 .group() 之前,您必须检查是否存在匹配项:

result = [f for f in files if re.search(r'_\d{2}\.csv$', f)] 

详情

  • _ - 下划线
  • \d{2} - 2 位数字
  • \. - 文字点
  • csv - csv 文本
  • $ - 字符串结尾。

参见 regex demo .

Python demo :

import re
files = ["gfrt_32_20.csv", "wertf_18.csv", "12_01.csv", "ith_Raw.csv"]
result = [f for f in files if re.search(r'_\d{2}\.csv$', f)]
print(result)
# => ['gfrt_32_20.csv', 'wertf_18.csv', '12_01.csv']

关于regex - 在 python 中使用带有列表理解的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com