如果我的字符串(文件名)大约为xyc.csv
,并且此名称存储为stringA
,我发现:
stringB = stringA.rstrip('.csv')
结果导致stringB
的值为xy
,其值应为xyc
。或者至少我认为应该。
有没有人注意到这个?我该如何停止?
答案 0 :(得分:4)
rstrip
删除传递的字符串中存在的所有字符,直到它击中不在传递的字符串中的字符。
>>> 'abcxyzxyz'.rstrip('xyz')
'abc'
如果您要删除文件扩展名,我建议os.path.splitext()
:
>>> import os
>>> os.path.splitext(r'C:\Users\John Doe\file.txt')
('C:\\Users\\John Doe\\file', '.txt')
>>> os.path.splitext(r'C:\Users\John Doe\file.txt')[0]
'C:\\Users\\John Doe\\file'
答案 1 :(得分:0)
rstrip
表示“从末尾删除与此字符串中的任何字符匹配的所有字符。”它并不意味着“假设从末尾删除此字符串”。
您必须检查字符串是否以.csv结尾,然后删除4个字符(如果有)。
答案 2 :(得分:-1)
使用正则表达式。
>>> import re
>>> re.sub('\\.csv$', '', 'XYZ.csv')
'XYZ'
rstrip
不适用于此任务,因为它将字符串视为单个字符的数组,并按照它们出现的顺序删除尽可能多的字符。
对于文件名,特别是有另一种解决方案:os.path
模块可以操作文件名,无论它是什么都可以轻松删除。
>>> import os
>>> os.path.splitext('XYZ.csv')[0]
'XYZ'