Python 同一行代码中的多个拆分?

Python 同一行代码中的多个拆分?,python,python-2.7,Python,Python 2.7,我正在尝试转换以下内容: /bcs/lgnp/clientapp/csvbill/audit\u process/inwork\u 20150921141500/lgnp.SMR.CSV0000.BILL.input1.kb01^ 20150921140115.xml 为此: kb01^.20150921140115 目前,我通过以下方式实现这一目标: cur_file = '/bcs/lgnp/clientapp/csvbill/audit_process/inwork_20150921141

我正在尝试转换以下内容:
/bcs/lgnp/clientapp/csvbill/audit\u process/inwork\u 20150921141500/lgnp.SMR.CSV0000.BILL.input1.kb01^ 20150921140115.xml

为此:
kb01^.20150921140115

目前,我通过以下方式实现这一目标:

cur_file = '/bcs/lgnp/clientapp/csvbill/audit_process/inwork_20150921141500/LGNP.SMR.CSV0000.BILL.INPUT01.kb01^^.20150921140115.xml'
file_path = cur_file.split('/')
file_name = file_path[-1].split('.')
project_code = file_name[5] + '.' + file_name[6]

可以一步完成吗?

类似于此的东西。join(cur_file.split('.)[-3:-1])?

类似于此的东西。join(cur_file.split('.)[-3:-1])是的

在一行中输入您的代码:

project_code = '.'join(curr_file.split('/')[-1].split('.')[-3:-1])
project_name = re.findall(exp, cur_file)[0]
由于
split()

这就是上面所做的。最后一个
[-3:-1]
只是从末尾开始索引,以始终删除
.xml

。.join()
是一种将句点放回原处的方法,同时也使结果成为单个字符串

由于以后要进行
拆分('/')
时没有理由拆分('/')
,因此可以将其缩短为:

project_code = '.'join(curr_file.split('.')[-3:-1])
祝你好运和快乐

是的

在一行中输入您的代码:

project_code = '.'join(curr_file.split('/')[-1].split('.')[-3:-1])
project_name = re.findall(exp, cur_file)[0]
由于
split()

这就是上面所做的。最后一个
[-3:-1]
只是从末尾开始索引,以始终删除
.xml

。.join()
是一种将句点放回原处的方法,同时也使结果成为单个字符串

由于以后要进行
拆分('/')
时没有理由拆分('/')
,因此可以将其缩短为:

project_code = '.'join(curr_file.split('.')[-3:-1])

祝你好运和快乐

路径拆分也可以使用
os.path
os.path.basename(cur_文件)
返回路径的文件名部分):


路径拆分也可以使用
os.path
os.path.basename(cur_文件)
返回路径的文件名部分):

如果您知道结尾始终有4个字符要删除:

print(s.split(".",5)[-1][:-4])
或:

或使用str.format和解包:

print("{}.{}".format(*s.rsplit(".", 3)[1:]))
如果任何字符串的格式与您发布的格式不同,则此答案和其他答案很可能会失败

如果您知道结尾始终有4个字符要删除:

print(s.split(".",5)[-1][:-4])
或:

或使用str.format和解包:

print("{}.{}".format(*s.rsplit(".", 3)[1:]))

如果任何字符串的格式与您发布的格式不符,则此答案和其他答案很可能会失败。

我将向您介绍正则表达式的强大功能,但请不要担心,它们是来帮助您的

在事先不知道其他路径是什么样子的情况下,我们可以确定项目代码是路径的最后一位,它由两个点之间的任意字符串和一个点与扩展之间的一系列数字组成,因此用于捕获此内容的正则表达式为:

import re
exp = re.compile(ur'.+\.(.+\.\d+).xml')
然后,您可以使用编译后的正则表达式在一行中查找字符串中的匹配标记:

project_code = '.'join(curr_file.split('/')[-1].split('.')[-3:-1])
project_name = re.findall(exp, cur_file)[0]

我将向您介绍正则表达式的强大功能,但不用担心,它们是来帮助您的

在事先不知道其他路径是什么样子的情况下,我们可以确定项目代码是路径的最后一位,它由两个点之间的任意字符串和一个点与扩展之间的一系列数字组成,因此用于捕获此内容的正则表达式为:

import re
exp = re.compile(ur'.+\.(.+\.\d+).xml')
然后,您可以使用编译后的正则表达式在一行中查找字符串中的匹配标记:

project_code = '.'join(curr_file.split('/')[-1].split('.')[-3:-1])
project_name = re.findall(exp, cur_file)[0]

您如何知道要获取哪些字段。除了.xml后缀,我不清楚。您如何知道要获取哪些字段。除了.xml后缀,我不清楚。由于Python的面向对象特性,您可以将函数“堆栈”到其他函数的末尾。由于Python的面向对象特性,您可以将函数“堆栈”到其他函数的末尾。