Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python从字符串中提取特定单词_Python_String - Fatal编程技术网

使用Python从字符串中提取特定单词

使用Python从字符串中提取特定单词,python,string,Python,String,我有一个字符串Job\u Cluster\u aku Alaska\u Yakutat\u CDP.png 从上面的字符串中,我只想提取这个单词Job\u Cluster\u AK\u Alaska\u之后和.png之前的单词 所以基本上我想在第四个单词后面提取,用下划线隔开,直到在.png之前 我对regex不熟悉 最后,我只想要Yakutat\u CDP即使没有regex,您也可以这样做: s = 'Job_Cluster_AK_Alaska_Yakutat_CDP.png' print(s

我有一个字符串
Job\u Cluster\u aku Alaska\u Yakutat\u CDP.png

从上面的字符串中,我只想提取这个单词
Job\u Cluster\u AK\u Alaska\u
之后和
.png
之前的单词

所以基本上我想在第四个单词后面提取,用下划线隔开,直到在.png之前

我对regex不熟悉


最后,我只想要
Yakutat\u CDP

即使没有regex,您也可以这样做:

s = 'Job_Cluster_AK_Alaska_Yakutat_CDP.png'
print(s[len('Job_Cluster_AK_Alaska_'):-len('.png')])
本质上,这里我使用的子字符串在
Job\u Cluster\u AK\u Alaska\u
之后立即开始,在
.png
之前结束

也许正则表达式方法更具可读性和可维护性:

import re
m = re.match('Job_Cluster_AK_Alaska_(.*).png')
print(m[1])

即使没有正则表达式,您也可以这样做:

s = 'Job_Cluster_AK_Alaska_Yakutat_CDP.png'
print(s[len('Job_Cluster_AK_Alaska_'):-len('.png')])
本质上,这里我使用的子字符串在
Job\u Cluster\u AK\u Alaska\u
之后立即开始,在
.png
之前结束

也许正则表达式方法更具可读性和可维护性:

import re
m = re.match('Job_Cluster_AK_Alaska_(.*).png')
print(m[1])

我想你要求的是这样的:

import os

# I think you will have different jobs/pngs, so pass these variables from somewhere
jobPrefix = 'Job_Cluster_AK_Alaska_'
pngString = 'Job_Cluster_AK_Alaska_Yakutat_CDP.png'

# Split filename/extension
pngTitle = os.path.splitext(pngString)[0]

# Get the filename without the jobPrefix
finalTitle = pngTitle[len(jobPrefix):]
编辑


尽量避免使用正则表达式,因为它通常比字符串切片慢得多

我想你要求的是这样的:

import os

# I think you will have different jobs/pngs, so pass these variables from somewhere
jobPrefix = 'Job_Cluster_AK_Alaska_'
pngString = 'Job_Cluster_AK_Alaska_Yakutat_CDP.png'

# Split filename/extension
pngTitle = os.path.splitext(pngString)[0]

# Get the filename without the jobPrefix
finalTitle = pngTitle[len(jobPrefix):]
编辑


尽量避免使用正则表达式,因为它通常比字符串切片慢得多

您需要描述在一般情况下要做什么,而不仅仅是在这个特定字符串上。@interjay,是的,我现在编辑了,但您仍然没有描述在一般情况下要做什么。i、 e.一个可能包含不同字符串的文件。@interjay,我正在尝试重命名文件,但仍然不是我要求的。。。。你需要写一个一般性的描述,比如“我想提取第五个和第六个单词,用下划线隔开。”(这只是一个例子,我不知道这是否是你真正需要的,因为你不会说)。否则,您将得到下面的答案,该答案仅适用于特定字符串。您需要描述在一般情况下,而不仅仅是在这个特定字符串上,您想做什么。@interjay,是的,我现在编辑了,但您仍然没有描述在一般情况下,您想做什么。i、 e.一个可能包含不同字符串的文件。@interjay,我正在尝试重命名文件,但仍然不是我要求的。。。。你需要写一个一般性的描述,比如“我想提取第五个和第六个单词,用下划线隔开。”(这只是一个例子,我不知道这是否是你真正需要的,因为你不会说)。否则,您将得到下面的答案,该答案仅适用于特定的字符串。我不想在re.match()中明确给出字符串名称,请您帮助我,而不考虑任何字符串它应该在“Job_Cluster_AK_Alaska_uu”之后和“.png”之前给出输出。我不明白此上下文中的
字符串名是什么。我不想在re.match()中明确给出字符串名,不管有什么字符串,您都能帮我吗它应该在“Job_Cluster_AK_Alaska_”之后和“.png”之前给出输出。我不明白在这种上下文中,字符串名是什么