2016-01-06 3 views
-1

Если у меня есть строка (имя), что-то порядка xyc.csv, и это имя хранится как stringA, я обнаружил, что:Я нахожу, что .rstrip ('. Csv') зачищает 'c', я не хочу, чтобы это полосало - как это предотвратить?

stringB = stringA.rstrip('.csv') 

Заканчивается вызывая stringB иметь значение xy, когда он должен иметь значение xyc. Или, по крайней мере, я думаю, что нужно.

Кто-нибудь еще заметил это? Как это сделать?

+2

Я не думаю, что это лишит верхний регистр «C», хотя. Он будет вырезать любой нижний регистр «c», вплоть до точки, где он не найдет ни одного символа (справа), который не находится в «.csv»: 'rstrip' и эквиваленты смотрят на любой * индивидуальный * символ в приведенная строка аргумента. – Evert

+0

Вы также можете рассмотреть 'os.path.splitext'. – Evert

+0

Это потому, что я сделал строку (имя файла) в верхнем регистре, когда мне этого не было. – traggatmot

ответ

0

rstrip означает «удалить все символы с конца, которые соответствуют любому из них в этой строке». Это не означает «удалить эту строку из конца», как вы предполагаете.

Вам нужно будет проверить, заканчивается ли строка .csv, а затем удалить 4 символа, если это произойдет.

-1

Используйте регулярное выражение.

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

rstrip не подходит для этой задачи, поскольку он рассматривает строку как массив отдельных символов, и удаляет как многие из этих персонажей, как это может в любом порядке, они происходят.

Для имен файлов, в частности, есть альтернативное решение: модуль os.path управляет именами файлов и может легко удалить расширение независимо от того, что это такое.

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

're.sub ('\\. Csv', '', 'XYZ.csv.txt')' скорее всего, не делает того, что требуется. То же самое с 'str.replace()'. Они не эквивалентны варианту 'rstrip', о котором думает OP. – Evert

+0

@Evert, спасибо большое. Я собирался положить '' 'на конец строки шаблона, но забыл, теперь он исправлен. –

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' 

 Смежные вопросы

  • Нет связанных вопросов^_^