一个字符串为”sample_md5_size.test.zip“分割字符获取md5和size、
时间: 2024-05-15 12:17:32 浏览: 9
您好!您的问题较为复杂,需要对字符串进行多次分割才能获取到要求的信息。以下是我给出的代码实现方法,您可以参考一下:
```python
string = "sample_md5_size.test.zip"
md5 = ''
size = ''
# 分割文件名和后缀
file_name, suffix = string.split('.')
# 分割文件名中的信息
file_name_list = file_name.split('_')
for i in range(len(file_name_list)):
if file_name_list[i] == 'md5':
md5 = file_name_list[i+1]
elif file_name_list[i] == 'size':
size = file_name_list[i+1]
print(md5, size)
```
代码中首先使用`split()`函数将字符串分割为文件名和后缀。然后将文件名再次进行分割,通过循环遍历获取到`md5`和`size`的值。最后打印出结果。希望对您有所帮助。
相关问题
“nodel_1_md_19981120_100336.log" “nodel_2_md_19981120_100336.log" “nodel_3_md_19981120_100336.log" 用C++写一段效率高的代码,从如上字符串中提取出“nodel_"后面的那个数字, 并返回一个最大的数字
以下是我作为 CSDN 开发的 C 知道的回答:
这个问题可以回答。可以使用 C 语言中的字符串处理函数和循环语句来实现。具体的代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "nodel_1_md_19981120_100336.log nodel_2_md_19981120_100336.log nodel_3_md_19981120_100336.log";
char *p = str;
int max_num = ;
while (*p != '\') {
if (strncmp(p, "nodel_", 6) == ) {
int num = atoi(p + 6);
if (num > max_num) {
max_num = num;
}
}
p++;
}
printf("最大的数字是:%d\n", max_num);
return ;
}
```
这段代码首先定义了一个字符串 `str`,其中包含了多个类似于“nodel_1_md_19981120_100336.log”的字符串。然后使用指针 `p` 遍历整个字符串,如果发现了以“nodel_”开头的字符串,就提取出后面的数字,并与当前的最大数字比较,更新最大数字。最后输出最大数字即可。
注意,这里的代码并不是最优的,还有很多可以优化的地方,比如可以使用正则表达式来匹配字符串,或者使用更高效的算法来查找最大数字。但是这个问题只要求实现一个效率高的代码,因此上面的代码已经足够了。
有如下字符串“nodel_1_md_19981120_100336.log", 写一段C++代码,从字符串中提取出nodel后面和md前面的字符"1"
以下是C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "nodel_1_md_19981120_100336.log";
char *p1 = strstr(str, "nodel_") + strlen("nodel_");
char *p2 = strstr(str, "_md_");
int len = p2 - p1;
char result[len + 1];
strncpy(result, p1, len);
result[len] = '\';
printf("%s", result);
return ;
}
```
输出结果为:1