如何在python中创建字符串的子字符串?

如何在python中创建字符串的子字符串?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我有如下文件名: PRJ25 Sample1 Siver_Output_Log_2020_11_10_13.csv PRJ25 Sample1 Siver_Output_Log_2020_12_30_4_1.csv PRJ25 Sample1 Siver_Output_Log_2021_1_8_4.csv 我希望从这些文件名输出到年、月、日。我尝试了以下代码,但文件名不一致,因此无法获取这些值,预期结果: year : 2020 or 2021 month: 11 or 12 or 1 day

我有如下文件名:

PRJ25 Sample1 Siver_Output_Log_2020_11_10_13.csv
PRJ25 Sample1 Siver_Output_Log_2020_12_30_4_1.csv
PRJ25 Sample1 Siver_Output_Log_2021_1_8_4.csv

我希望从这些文件名输出到
年、月、日
。我尝试了以下代码,但文件名不一致,因此无法获取这些值,预期结果:

year : 2020 or 2021
month: 11 or 12 or 1
day: 10 or 30 or 8
我的代码:

year = file_name[len(file_name) - 14:len(file_name) - 10]
    month = file_name[len(file_name) - 9:len(file_name) - 8]
    day = file_name[len(file_name) - 7:len(file_name) - 6]

您可以使用拆分功能:

year = file_name.split('_')[3]
Split在由指定字符分隔的字符串列表中转换字符串。今年我检索到了第四个。

您可以尝试以下方法:

year, month, day, last_num = filename.split("_")[-4:]
last_num = last_num.split(".")[0]
试试这个:

files = [
    "PRJ25 Sample1 Siver_Output_Log_2020_11_10_13.csv",
    "PRJ25 Sample1 Siver_Output_Log_2020_12_30_4_1.csv",
    "PRJ25 Sample1 Siver_Output_Log_2021_1_8_4.csv",
]

results = [f.split("Log_")[-1].rsplit("_")[:3] for f in files]

print(results)

for result in results:
    year, month, day = result
    print(year, month, day)
    # do your stuff here

输出:

[['2020', '11', '10'], ['2020', '12', '30'], ['2021', '1', '8']]
2020 11 10
2020 12 30
2021 1 8

.split(''3')[-1]。split('.')[0]。split(''code')
“我尝试了下面的代码,但文件名不一致”我不明白这是什么意思。您应该显示一个文件名不起作用的示例,显示发生了什么,显示应该发生什么,并解释您认为出现了什么问题。“我希望输出从这些文件名检索年、月、日”好的。告诉您年、月和日在字符串中的位置的实际规则是什么?