查询包含 _ 的字符串时出现问题 - Python

发布于 2025-01-08 07:53:04 字数 369 浏览 1 评论 0原文

我有一个文件列表

DIRLIST = ['201008190000_15201_NC.GZ', '201008190000_15202_NC.GZ', 
'201008190000_16203_NC.GZ', '201008200000_15201_NC.GZ', '201008200000_15202_NC.GZ', 
'201008200000_16203_NC.GZ',]

,我想挑选出某些文件 - 比如说其中包含 16203 的两个文件。

我的第一个想法是在 for 循环中使用 stringsplit,但是 stringsplit 除了字符串中的 _ 之外没有给我任何东西 - 而且我有点卡住了。

有什么想法吗?

I have a list of files

DIRLIST = ['201008190000_15201_NC.GZ', '201008190000_15202_NC.GZ', 
'201008190000_16203_NC.GZ', '201008200000_15201_NC.GZ', '201008200000_15202_NC.GZ', 
'201008200000_16203_NC.GZ',]

and I want to pick out certain files - say the two with 16203 in them.

My first thought was to use stringsplit in a for loop, but stringsplit doesn't give me anything beyond the _ in the strings - and I'm a little stuck.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

樱娆 2025-01-15 07:53:05
import re
[dir for dir in files if re.search("(_16203_)", ",".join(DIRLIST))]
import re
[dir for dir in files if re.search("(_16203_)", ",".join(DIRLIST))]
赴月观长安 2025-01-15 07:53:04
filtered = [dir for dir in DIRLIST if '16203' in dir]
filtered = [dir for dir in DIRLIST if '16203' in dir]
笑饮青盏花 2025-01-15 07:53:04

如果您知道文件名的格式(日期时间、下划线、id、下划线、字母、点、GZ),则使用以下命令:

[d for d in DIRLIST if d.split('_')[1] == '16203']

另一个命题(使用简单的 if '16203' in dir 将使文件名像 201008162030_15201_NC_GZ 也通过,这不是你想要的。

If you know the format of the filenames (datetime, underscore, id, underscore, letters, dot, GZ), then use this:

[d for d in DIRLIST if d.split('_')[1] == '16203']

The other proposition (with simple if '16203' in dir will let filenames like 201008162030_15201_NC_GZ through too, which is not what you want.

飞烟轻若梦 2025-01-15 07:53:04

不确定你所说的“除了字符串中的 _ 之外没有给我任何东西”是什么意思

    >>> '201008190000_15201_NC.GZ'.split('_')
    ['201008190000', '15201', 'NC.GZ']

如果你所需要的只是像你所说的一个简单的条件,那么彼得的建议会很好,并且比你尝试使用 split 的任何东西都要好。

Not sure what you mean by 'doesn't give me anything beyond the _ in the strings'

    >>> '201008190000_15201_NC.GZ'.split('_')
    ['201008190000', '15201', 'NC.GZ']

If all you need is a simple condition like you said, then Peter's suggestion will do just fine and is better that anything you would try with split.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文