0

私は、28 の言語で出版された賛美歌集の賛美歌のタイトルを含むデータベースを持っています。タイトルを入力しながら、各言語でどの Unicode 文字が最も正しいかを調べました (たとえば、トンガ語の声門の終点は、アポストロフィのように見えますが、U+02BB である必要があります。また、ルーマニア語では、U+021A (ț) U+0163 (ţ) などよりも正確です)。

現在、私は同様のプロジェクトに取り組んでおり、すべてのタイトルを単一の言語で収集し、タイトルで使用されたすべての一意の文字のリストを出力することにより、研究に戻って「分解」したいと考えています。

MySQL や Python でこれを行う方法はありますか? 文字列をすべての文字に分割し、すべての文字を並べ替えて、グループ化することを考えています。私の Web サイトは Python で書かれていますが、それはすべて非常に基本的なコーディングです (私はまだそれほど高度ではありません)。


編集:これらの応答のおかげで、これが私のコードが最終的にどのようになったかであり、うまく機能します!

hymnstitleslist = lookup('''
  SELECT HyName FROM Hymns
  WHERE HymnbookID = "'''+hbid+'''"
''')
import string
from collections import Counter
some_text = ""
for x in range(0, len(hymnstitleslist)):
  some_text = some_text+hymnstitleslist[x]['HyName']
letters = []
for i in some_text:
  letters.append(i)
letter_count = Counter(letters)
for letter,count in letter_count.iteritems():
  print "{}: {}".format(letter,count)
4

2 に答える 2

2

文字列をすべての文字に分割し、すべての文字を並べ替えて、グループ化することを考えています。

この部分は簡単に実行できます。

import string

from collections import Counter

some_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque fringilla augue ac metus laoreet quis imperdiet velit congue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque tincidunt lorem ut justo fermentum adipiscing. Nullam ullamcorper eros in arcu tincidunt non scelerisque ligula molestie. Vestibulum imperdiet facilisis nisi, et sodales leo sodales at. In hac habitasse platea dictumst."

letters = []
for i in some_text:
   # Each "i" is a letter or space
   if i in string.letters:
      # only collect letters, not punctuation marks or spaces
      letters.append(i)

# count how many of each
letter_count = Counter(letters)

# For each letter, print the count:

for letter,count in letter_count.iteritems():
    print "{}: {}".format(letter,count)

これにより、次のことが得られます。

C: 1
I: 1
L: 1
N: 1
Q: 1
P: 1
V: 2
a: 24
c: 19
b: 5
e: 44
d: 10
g: 6
f: 4
i: 44
h: 2
j: 1
m: 17
l: 27
o: 17
n: 18
q: 4
p: 10
s: 32
r: 19
u: 34
t: 31
v: 1

MySQL テーブルからプルしているので、データはディクショナリにあります。選択したすべてのエントリのデータを結合するにはどうすればよいですか?

最初のステップは、すべてのデータを何らかのコレクションに収集することです。リストとしましょう。

letters = []

cur.execute(some_query) # See the Python database API for what is going on here
results = cur.fetchone()

while results:
   the_text = results[0] # if its the first column
   for i in the_text.split():
       # By default, split() will separate on whitespace,
       # so each i is a word.
       for letter in i:
           if letter in string.letters:
               letters.append(letter)

    results = cur.fetchone() # get the next result
于 2013-03-06T06:28:55.287 に答える
1

すべてのタイトルを文字で分割してセットに追加できます。セットでは、すべてのユニークなキャラクターを入手できます。簡単な例は次のとおりです。

all_you_titles_string = 'title1 title2 ti tl e3'
result_set = set()
[result_set.add(letter) for letter in all_you_titles_string.replace(' ', '')]
print result_set 
于 2013-03-06T06:25:12.317 に答える