我试图同时拆分和剥离一个字符串。
我有一个文件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
答案 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])
如果您rstrip
或strip
最终删除的内容不仅仅是.txt
。
答案 4 :(得分:0)
对于python 3.4或更高版本:
import pathlib
name = r"D:\printLogs\newPrintLogs\4.txt"
stem = pathlib.Path(name).stem
print(stem) # prints 4