SORU
23 EKİM 2008, PERŞEMBE


Nasıl Python ile bir dize arasında dolaşmak mı?

Örnek olarak, izin verir bir dize içinde alfabenin her harfin frekans listesi yapmak istedim söylüyorlar. Bunu yapmak için en kolay yolu ne olurdu?

Bu benim düşündüğüm bir örnek... soru allTheLetters bir şey olmadan harfleri söyledi eşit yapmak için nasıl allTheLetters gibi = "abcdefg...xyz". Diğer birçok dilde sadece mektup ve artış alfabesi kullanarak kendi yöntemimle yaparım. ama şimdiye kadar python ile bunu yapmak için bir yol rastlamadım.

def alphCount(text):
  lowerText = text.lower()
  for letter in allTheLetters:  
    print letter   ":", lowertext.count(letter)

CEVAP
23 EKİM 2008, PERŞEMBE


Sorduğun sorunun cevabı alfabesi arasında dolaşmak için nasıl () çözmeye çalıştığınız sorun olarak aynı soruyu bir dizedeki harflerin frekans sayısı nasıl ().

Dize kullanabilirsiniz.diğer posterler öne sürdüğü gibi küçük,:

import string
allTheLetters = string.lowercase

Şeyler"", rakam harf tedavisi, kullanabilirsiniz "ord" ve "> > " fonksiyonları. alıştığınız şekilde yapmak Hiç tam olarak bunu yapmak için kesinlikle bir neden yok, ama belki de aslında anlamaya çalışıyoruz ne daha yakın geliyor

def getAllTheLetters(begin='a', end='z'):
    beginNum = ord(begin)
    endNum = ord(end)
    for number in xrange(beginNum, endNum 1):
        yield chr(number)

Bu kod True yazdırır, çünkü doğru olan bu mu anlayabilirsiniz:

import string
print ''.join(getAllTheLetters()) == string.lowercase

Ama, aslında çözmeye çalıştığınız sorunu çözmek için bir sözlük kullanın ve harfleri toplamak istiyorum:

from collections import defaultdict    
def letterOccurrances(string):
    frequencies = defaultdict(lambda: 0)
    for character in string:
        frequencies[character.lower()]  = 1
    return frequencies

Kullanmak gibi

occs = letterOccurrances("Hello, world!")
print occs['l']
print occs['h']

Bu baskı '3' ve '1' sırasıyla.

Bu unicode için de çalıştığını unutmayın:

# -*- coding: utf-8 -*-
occs = letterOccurrances(u"héĺĺó, ẃóŕĺd!")
print occs[u'l']
print occs[u'ĺ']

Eğer unicode (her karakter aracılığıyla artan) diğer yaklaşım denemek için olsaydı uzun zaman beklersin; unicode karakterleri milyonlarca vardır.

Orijinal fonksiyon (alfabetik sırayla her harf ve sayıları yazdırma) bu şartları uygulamak için:

def alphCount(text):
    for character, count in sorted(letterOccurrances(text).iteritems()):
        print "%s: %s" % (character, count)

alphCount("hello, world!")

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BASS212M

    BASS212M

    15 Temmuz 2009
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007
  • Top Gear

    Top Gear

    27 Mart 2006