在python中同时剥离和拆分

在python中同时剥离和拆分,python,Python,我试着同时拆开一根绳子。 我有一个文件D:\printLogs\newPrintLogs\4.txt,我想将它拆分为只得到4.txt,然后去掉.txt并添加字符串+.zpr以得到4.zpr。 这是我尝试使用的代码: name = str(logfile) print ("File name: " + name.split('\\')[-1] + name.strip( '.txt' )) 但我得到的结果是: File name: 4.txtD:\printLogs\newPrintLogs\4

我试着同时拆开一根绳子。 我有一个文件D:\printLogs\newPrintLogs\4.txt,我想将它拆分为只得到4.txt,然后去掉.txt并添加字符串+.zpr以得到4.zpr。 这是我尝试使用的代码:

name = str(logfile)
print ("File name: " + name.split('\\')[-1] + name.strip( '.txt' ))
但我得到的结果是:

File name: 4.txtD:\printLogs\newPrintLogs\4

你加的太多了。这就是您所需要的:

print ("File name: " + name.split('\\')[-1].strip( '.txt' ))
更好的方法是使用操作系统模块:

或者,分为几个步骤,偶尔提供反馈:

>>> import os
>>> name = r'D:\printLogs\newPrintLogs\4.txt'
>>> basename = os.path.basename(name)
>>> basename
'4.txt'
>>> splitname = os.path.splitext(basename)
>>> splitname
('4', '.txt')
>>> splitname[0]
'4'

你加的太多了。这就是您所需要的:

print ("File name: " + name.split('\\')[-1].strip( '.txt' ))
更好的方法是使用操作系统模块:

或者,分为几个步骤,偶尔提供反馈:

>>> import os
>>> name = r'D:\printLogs\newPrintLogs\4.txt'
>>> basename = os.path.basename(name)
>>> basename
'4.txt'
>>> splitname = os.path.splitext(basename)
>>> splitname
('4', '.txt')
>>> splitname[0]
'4'

您可以拆分和重新排序:

print(s.rsplit("\\",1)[1].rstrip(".txt"))
但在同一时间分开可能更安全


如果您rstrip或rstrip,您可能会删除的不仅仅是.txt文件。

您可以拆分和rstrip:

print(s.rsplit("\\",1)[1].rstrip(".txt"))
但在同一时间分开可能更安全


如果重新剥离或剥离,最终可能会删除的不仅仅是.txt文件。

不要使用剥离和剥离

首先,剥离从集合中删除所有字符,即从字符串的开头和结尾删除所有“t”、“x”和“.”字符,而不考虑顺序:

>>> 'tttx.foox'.strip('.txt')
'foo'
>>> 'tttx.foox'.strip('xt.')
'foo'
其次,Python为您提供了以跨平台和一致的方式处理路径的方法:

basename = os.path.basename(logfile)
if basename.endswith('.txt'):
    basename = os.path.splitext(basename)[0]
如果只想删除任何扩展名,可以删除str.endswith测试:

basename = os.path.splitext(os.path.basename(logfile))[0]
演示:


不要使用剥离和拆分

首先,剥离从集合中删除所有字符,即从字符串的开头和结尾删除所有“t”、“x”和“.”字符,而不考虑顺序:

>>> 'tttx.foox'.strip('.txt')
'foo'
>>> 'tttx.foox'.strip('xt.')
'foo'
其次,Python为您提供了以跨平台和一致的方式处理路径的方法:

basename = os.path.basename(logfile)
if basename.endswith('.txt'):
    basename = os.path.splitext(basename)[0]
如果只想删除任何扩展名,可以删除str.endswith测试:

basename = os.path.splitext(os.path.basename(logfile))[0]
演示:


谢谢你们的解决方案,它帮助了我,但一开始我并没有正确地解释这个问题。 我找到了解决问题的办法


谢谢你们的解决方案,它帮助了我,但一开始我并没有正确地解释这个问题。 我找到了解决问题的办法


对于python 3.4或更高版本:

import pathlib

name = r"D:\printLogs\newPrintLogs\4.txt"
stem = pathlib.Path(name).stem
print(stem) # prints 4

对于python 3.4或更高版本:

import pathlib

name = r"D:\printLogs\newPrintLogs\4.txt"
stem = pathlib.Path(name).stem
print(stem) # prints 4
尝试从代码str中删除+name.strip.txt。strip.txt不只是删除尾部的.txt扩展名。它删除集合中的所有字符;您将得到与使用str.strip'tx'完全相同的结果。如果输入是“tttx.fooxt”,那么您将以“foo”作为开始和结束,并删除所有的“t”、“x”和“.”字符。在str.endswidth测试之后,您可能需要使用不同的技术os.path.splitext或切片。请尝试从代码str中删除+name.strip“.txt”。strip“.txt”不仅仅删除尾部的.txt扩展名。它删除集合中的所有字符;您将得到与使用str.strip'tx'完全相同的结果。如果输入是“tttx.fooxt”,那么您将以“foo”作为开始和结束,并删除所有的“t”、“x”和“.”字符。在str.endswidth测试之后,您可能需要使用不同的技术os.path.splitext或切片。