我发现.rstrip('.csv')正在剥离一个'c',我不想让它剥离如何防止这种情况?

2024-09-25 14:17:00 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个xyc.csv顺序的字符串(文件名),并且这个名称存储为stringA,我发现:

stringB = stringA.rstrip('.csv')

最终导致stringB的值为xy,而该值应为xyc。或者至少我觉得应该。你知道吗

其他人注意到了吗?我怎么才能停下来?你知道吗


Tags: csv字符串名称顺序文件名xyrstripstringa
3条回答

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'

使用正则表达式。你知道吗

>>> import re
>>> re.sub('\\.csv$', '', 'XYZ.csv')
'XYZ'

rstrip不适合此任务,因为它将字符串视为单个字符的数组,并以任何顺序删除尽可能多的字符。你知道吗

特别是对于文件名,有另一种解决方案:os.path模块处理文件名,并且可以轻松地删除扩展名,不管它是什么。你知道吗

>>> import os
>>> os.path.splitext('XYZ.csv')[0]
'XYZ'

rstrip的意思是“从末尾删除与此字符串中的任何字符匹配的所有字符”,而不是像您假设的那样“从末尾删除此字符串”。你知道吗

您必须检查字符串是否以.csv结尾,如果以.csv结尾,则删除4个字符。你知道吗

相关问题 更多 >