Comment detail
文字変換表に基く文字列の変換 (Nested Flatten)This comment is reply for 5651 ocean: (1)で。(文字変換表に基く文字列の変換). Go to thread root.
うーむ、なるほど。(こんなメソッドがあったのか) では、(2)で。
1 2 3 4 5 6 7 8 9 10 11 | import itertools
import re
def tr(old, new, str):
def expand(s):
return re.sub("(.)-(.)", lambda m: "".join(chr(i) for i in xrange(ord(m.group(1)), ord(m.group(2)) + 1)), s)
h = dict(itertools.izip(expand(old), expand(new)))
return "".join(h.get(c, None) or c for c in str)
print tr('qwertyuiop', 'QWERTYUIOP', "typewriter")
print tr('a-ceh-j', 'A-CEH-J', "abcdefghijk")
|
この場合、関数内関数にする必要はなかったかな。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | --- a.py Sun Feb 3 11:56:31 2008
+++ a.py Sun Feb 3 11:58:05 2008
@@ -1,9 +1,10 @@
import itertools
import re
+def expand(s):
+ return re.sub("(.)-(.)", lambda m: "".join(chr(i) for i in xrange(ord(m.group(1)), ord(m.group(2)) + 1)), s)
+
def tr(old, new, str):
- def expand(s):
- return re.sub("(.)-(.)", lambda m: "".join(chr(i) for i in xrange(ord(m.group(1)), ord(m.group(2)) + 1)), s)
h = dict(itertools.izip(expand(old), expand(new)))
return "".join(h.get(c, None) or c for c in str)
|




dpp
#5656()
[
Python
]
Rating1/1=1.00
Rating1/1=1.00-0+