使用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”之前给出输出。我不明白在这种上下文中,字符串名是什么