сворачивание пробела в строке

Этот ответ в большой степени под влиянием разговора здесь: http://www.tek-tips.com/viewthread.cfm?qid=1395151&page=3

ALTER SYSTEM ENABLE RESTRICTED SESSION;

begin     
    for x in (  
            select Sid, Serial#, machine, program  
            from v$session  
            where  
                machine <> 'MyDatabaseServerName'  
        ) loop  
        execute immediate 'Alter System Kill Session '''|| x.Sid  
                     || ',' || x.Serial# || ''' IMMEDIATE';  
    end loop;  
end;

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

8
задан priestc 13 August 2009 в 11:13
поделиться

4 ответа

Вот пошаговый подход (но в верхнем регистре фактически используется строковый метод - намного проще!):

rex = re.compile(r'\W+')
result = rex.sub(' ', strarg).upper()

где strarg - строковый аргумент ( не используйте имена эти теневые встроенные или стандартные библиотечные модули, пожалуйста ).

17
ответ дан 3 November 2019 в 14:19
поделиться
s = "$$$aa1bb2 cc-dd ee_ff ggg."
re.sub(r'\W+', ' ', s).upper()
# ' AA1BB2 CC DD EE_FF GGG '

Используется ли _ пунктуация?

re.sub(r'[_\W]+', ' ', s).upper()
# ' AA1BB2 CC DD EE FF GGG '

Не нужны начальные и конечные пробелы?

re.sub(r'[_\W]+', ' ', s).strip().upper()
# 'AA1BB2 CC DD EE FF GGG'
5
ответ дан 3 November 2019 в 14:19
поделиться
result = rex.sub(' ', string) # this produces a string with tons of whitespace padding
result = rex.sub('', result) # this reduces all those spaces

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

result = rex.sub(' ', string) # this produces a string with tons of whitespace padding
result = rex_s.sub(' ', result) # this reduces all those spaces
3
ответ дан 3 November 2019 в 14:19
поделиться

Обязательно ли использовать регулярные выражения? Считаете ли вы, что должны делать это в одну строку?

>>> import string
>>> s = "stuff   .  // : /// more-stuff .. .. ...$%$% stuff -> DD"
>>> s2 = ''.join(c for c in s if c in string.letters + ' ')
>>> ' '.join(s2.split())
'stuff morestuff stuff DD'
1
ответ дан 3 November 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: