python - 如何在找到 k 个连续数字后终止字符串?

标签 python string optimization

假设我有一些包含 *.1243.* 形式的文件的列表,我希望获得这 4 位数字之前的所有内容。我如何有效地做到这一点?

一个丑陋、低效的工作代码示例是:

names = []
for file in file_list:
    words = file.split('.')
    for i, word in enumerate(words):
        if word.isdigit():
            if int(word)>999 and int(word)<10000:
                names.append(' '.join(words[:i]))
                break
print(names)

但显然,这远非理想,我想知道更好的方法来做到这一点。

最佳答案

您可能需要为此使用正则表达式。

import re

name = []
for file in file_list:
    m = re.match(r'^(.+?)\.\d{4}\.', file)
    if m:
        name.append(m.groups()[0])

关于python - 如何在找到 k 个连续数字后终止字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48543438/

相关文章:

string - Hive 查询字符串大小写

r - 在一个字符串向量中搜索另一个字符串向量中某个字符串的所有实例

RequireJS + Optimizer 包含主文件中定义的模块

c++ - 哪个(如果有的话)C++ 编译器进行尾递归优化?

python - 在numpy中将2D数组广播到4D数组

python - 如何将 python 包传递给 spark 作业并使用参数从包中调用主文件

c# - 将 C# 字符串与 '==' 进行比较是一种好习惯吗?

python - 就地更改python文件

python - 使用 word2vec 查找最相关的单词

javascript - 优化 JavaScript 图像动画的性能