2016-09-30 4 views
2

Вот что я сделал:Удалите все круглые скобки и замените все пробелы символами подчеркивания?

import re 
def demicrosoft (fn): 

    fn = re.sub('[()]', '', fn) 
    for ch in [' ']: 
     fn = fn.replace(ch,"_"+ch) 
    return fn 
print(demicrosoft('a bad file name (really)')) 


>>> (executing lines 1 to 12 of "<tmp 2>") 
a_ bad_ file_ name_ really 

Там находятся помещения с последующим подчеркиванием. Как я могу это исправить?

+1

Почему вы добавляете пробел назад '' _ '+ ch' - 'ch' - это пробел? Разве вы не имеете в виду '' _'' - поскольку вы пытаетесь заменить '' ''на' '_'', а' ch' - '' ''. – AChampion

+1

Почему не просто 'return re.sub ('[()]', '', fn) .replace ('', '_')' – thefourtheye

+0

Почему в скобках нет скобок, скобок и квадратных скобок? Все действующие имена файлов на современных файловых системах. – Anthon

ответ

2

Вы можете просто приковать ряд replace с для этого:

a = 'a bad file name (really)' 

>>> a.replace('(', '').replace(')', '').replace(' ', '_') 
'a_bad_file_name_really' 
1

удалить ч из "_" + ч в заменить вызов следующим

import re 
def demicrosoft (fn): 

    fn = re.sub('[()]', '', fn) 
    for ch in [' ']: 
     fn = fn.replace(ch,"_") 
    return fn 
2

Вы можете сделать это с str.translate():

>>> table = str.maketrans({'(':None, ')':None, ' ':'_'}) 
>>> 'a bad file name (really)'.translate(table) 
'a_bad_file_name_really' 
Смежные вопросы