SORU
18 EYLÜL 2010, CUMARTESİ


Nasıl bir dize tüm beyaz boşluk şerit

Python nasıl bir dize tüm alanlarda şerit muyum? Örneğin, strip my spaces gibi bir dize stripmyspaces, dönüşmek istiyorum ama yapamam strip() ile bunu başarmak için bir şey gibi görünüyor

>>> 'strip my spaces'.strip()
'strip my spaces'

CEVAP
18 EYLÜL 2010, CUMARTESİ


Str yararlanarak.Eyl parametre ile çatlak davranış:

>>> s = " \t foo \n bar "
>>> "".join(s.split())
'foobar'

Sadece boşluk yerine boşluk kaldırmak istiyorsanız:

>>> s.replace(" ", "")
'\tfoo\nbar'

Erken optimizasyonu

Verimliliği hedefi—yazma birincil açık kod olmasa bile bazı ilk zamanlamaları burada

$ python -m timeit '"".join(" \t foo \n bar ".split())'
1000000 loops, best of 3: 1.38 usec per loop
$ python -m timeit -s 'import re' 're.sub(r"\s ", "", " \t foo \n bar ")'
100000 loops, best of 3: 15.6 usec per loop

Normal ifade hayal ediyorum kadar yavaş değil yani önbelleğe alınan not. Bu derleme, önceden bazı yardımcı olur, ama sadece eğer bu çağrı eğer uygulamada sorun olurbirçoktimes:

$ python -m timeit -s 'import re; e = re.compile(r"\s ")' 'e.sub("", " \t foo \n bar ")'
100000 loops, best of 3: 7.76 usec per loop

Tekrar olsa bile.alt 11.3 x yavaş, sorunları mutlaka başka bir yerde olduğunuzu unutmayın. Çoğu program bu 3 seçenek arasında herhangi bir fark olmaz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • Paste Magazine

    Paste Magazi

    28 AĞUSTOS 2008