2016-04-10 33 views
1

Bir karakter dizisi (:, '.', '_', '-') olmayan karakterleri değiştirmeye çalışıyorum, ancak yine de. alt her zaman sadece bir karakter yerine tüm dizeyi değiştirir.Tek bir karakteri python 3'teki bir alt dizeyle değiştirme

xmlreplace=re.compile("((?i)[^\w\_\-\.])", re.UNICODE) 
print(xmlreplace.sub("regex test","-")) 

beklenen çıkışı: "regex-testi"

gerçek çıktı: "-"

+0

kaç yedek istiyorsun olmalıdır? Değiştirilecek – rock321987

+0

@ rock321987 sayısını sınırlamak için kullanılabilecek ekstra bir parametre 'sayısı 'vardır. İstenmeyen karakterlerin tüm oluşumlarını değiştirmek isterdim –

+2

Regex kalıpları," r "..." 'ham dizelerini kullanmalıdır. – interjay

cevap

0

Argümanlar sırasızdır. Eğer re.sub() kullanılmasını istiyorsanız, bu

print(xmlreplace.sub("-" , "regex test")) 

Ideone Demo

olmalıdır.

re.sub(pattern, repl, string, count=0) 

o zaman,

xmlreplace=re.compile("((?i)[^\w\_\-\.])", re.UNICODE) 
print(re.sub(xmlreplace, "-" , "regex test")) 
1

argümanlar yuvarlak yanlış bir yoldur.

>>> help(xmlreplace.sub) 
Help on built-in function sub: 

sub(...) 
    sub(repl, string[, count = 0]) --> newstring 
    Return the string obtained by replacing the leftmost non-overlapping 
    occurrences of pattern in string by the replacement repl. 
>>> print(xmlreplace.sub("-", "regex test")) 
regex-test 
İlgili konular