我发现.rstrip('。csv')正在剥离'c'我不希望它剥离 - 如何防止这种情况?

时间:2016-01-06 04:16:42

标签: python strip

如果我的字符串(文件名)大约为xyc.csv,并且此名称存储为stringA,我发现:

stringB = stringA.rstrip('.csv')

结果导致stringB的值为xy,其值应为xyc。或者至少我认为应该。

有没有人注意到这个?我该如何停止?

3 个答案:

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