在python中同时剥离和拆分

时间:2015-08-19 08:47:03

标签: 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

5 个答案:

答案 0 :(得分:5)

不要使用剥离和分裂。

首先,剥离会删除中的所有字符,您要移除所有't''x''.'个字符从字符串的开头和结尾开始,无论顺序如何:

>>> 'tttx.foox'.strip('.txt')
'foo'
>>> 'tttx.foox'.strip('xt.')
'foo'

其次,Python为您提供os.path module以跨平台和一致的方式处理路径:

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]

演示:

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

答案 1 :(得分:3)

你在那里添加太多了。这就是你所需要的:

print ("File name: " + name.split('\\')[-1].strip( '.txt' ))

更好的是,使用os模块:

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

或者,在几个步骤中分开,偶尔会有反馈:

>>> 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'

答案 2 :(得分:1)

谢谢大家帮助我的解决方案,但起初我没有解释问题。
我为我的问题找到了解决方案

name = str(logfile)
print ("Part name: " + name.split('\\')[-1].replace('.txt','.zpr'))

答案 3 :(得分:0)

你可以拆分和rstrip:

print(s.rsplit("\\",1)[1].rstrip(".txt"))

但是,在.上分割可能更安全:

print(s.rsplit("\\",1)[1].rsplit(".",1)[0])

如果您rstripstrip最终删除的内容不仅仅是.txt

答案 4 :(得分:0)

对于python 3.4或更高版本:

import pathlib

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