2014-10-09 7 views
0

У меня есть цикл, который производит переменную current_out_dir, иногда переменная будет иметь /. в конце линии (то есть /.$) Я хочу, чтобы заменить /.$ с /$. В настоящее время у меня есть .replace('/.','/'), но это заменит скрытые каталоги, которые начинаются с .. например /home/.log/file.txtКак заменить строку регулярного выражения на строку?

Я просмотрел re.sub(), но не могу понять, как его применять.

ответ

1

Точка будет соответствовать любому символу символа новой строки. Таким образом, вам нужно избежать точки, чтобы соответствовать буквальной точке.

re.sub(r'(?<=/)\.$', r'', string) 
+0

В терминах переменной, а не строки, я мог сделать 'current_out реж = re.sub (г '(? <= /) \. $', Г '\ /', current_out_dir)' Ваш 'r''' удалит строку целиком вместо того, чтобы заменить ее'/', правильно? – p014k

+0

нет, он удаляет последнюю точку, которая была сразу после '/' с пустой строкой. –

1
/\.(?=$) 

Попробуйте this.This должны работать для you.This использует положительный предпросмотр утверждать конец строки.

0

Вопрос был в использовании regex, но я придумал более pythonic решение проблемы.

if os.path.split(current_out_dir)[1] == '.': 
    current_out_dir = os.path.split(current_out_dir)[0] 
Смежные вопросы