答えて
あなたは文字の序に文字を変換し、バックアップするord()
を使用することができます。
def char_range(start, end, step=1):
for char in range(ord(start), ord(end), step):
yield chr(char)
それだけで正常に動作するようです:
>>> ''.join(char_range('a', 'z'))
'abcdefghijklmnopqrstuvwxy'
は決して手紙の範囲に組み込まれていませんが、あなたは書くことができます1:
def letter_range(start, stop):
for c in xrange(ord(start), ord(stop)):
yield chr(c)
for x in letter_range('a', 'h'):
print x,
プリント:
a b c d e f g
のような何か:
for x in [chr(i) for i in range(ord('a'),ord('h')]
(または多分:
for x in map(chr, range(*map(ord,['a', 'h'])))
)
これに最後の文字は含まれていないことに注意してください。アルファベット全体をしたい場合は、 [chr(i)for私は範囲内にある(ord( 'a')、ord( 'z')+1) – seddonym
import string
def letter_range(f,l,al = string.ascii_lowercase):
for x in al[al.index(f):al.index(l)]:
yield x
print ' '.join(letter_range('a','h'))
結果は
a b c d e f g
これは私が、少なくとも/読み、理解するために(そして、あなたが簡単にカスタマイズすることができます含まれている文字、そしてどのような順序で)簡単です:
letters = 'abcdefghijklmnopqrstuvwxyz'
for each in letters:
print each
result:
a
b
c
...
z
...サイトに新しく、どのようにコードブロックを正しく表示させるのですか?(上記のものとは対照的に) – Joey
コードを選択して '{}'ボタンを押すか、各コード行を少なくとも4つのスペースでインデントします – user3288829
エマヌエーレのソリューションは、として素晴らしいです私が認めてくれる一人称文字の範囲を求めている限り、元の質問者が提出したものです。すべての複数文字の組み合わせを生成するためのソリューションもあります:How to generate a range of strings from aa... to zz。しかし、範囲機能のようなキャラクターが欲しいと思う人は、 'y'から 'af'( 'z'から'aa 'に転がる)という任意の範囲を生成することに対処できるようにしたいと思うかもしれません。したがって、範囲の最後のメンバーまたはその長さを指定する機能を含む、より一般的な解決策があります。
def strange(start, end_or_len, sequence='ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
"""Create a generator of a range of 'sequential' strings from
start to end_or_len if end_or_len is a string or containing
end_or_len entries if end_or_len is an integer.
>>> list(strange('D', 'F'))
['D', 'E', 'F']
>>> list(strange('Y', 'AB'))
['Y', 'Z', 'AA', 'AB']
>>> list(strange('Y', 4))
['Y', 'Z', 'AA', 'AB']
>>> list(strange('A', 'BAA', sequence='AB'))
['A', 'B', 'AA', 'AB', 'BA', 'BB', 'AAA', 'AAB', 'ABA', 'ABB', 'BAA']
>>> list(strange('A', 11, sequence='AB'))
['A', 'B', 'AA', 'AB', 'BA', 'BB', 'AAA', 'AAB', 'ABA', 'ABB', 'BAA']
"""
seq_len = len(sequence)
start_int_list = [sequence.find(c) for c in start]
if isinstance(end_or_len, int):
inclusive = True
end_int_list = list(start_int_list)
i = len(end_int_list) - 1
end_int_list[i] += end_or_len - 1
while end_int_list[i] >= seq_len:
j = end_int_list[i] // seq_len
end_int_list[i] = end_int_list[i] % seq_len
if i == 0:
end_int_list.insert(0, j-1)
else:
i -= 1
end_int_list[i] += j
else:
end_int_list = [sequence.find(c) for c in end_or_len]
while len(start_int_list) < len(end_int_list) or start_int_list <= end_int_list:
yield ''.join([sequence[i] for i in start_int_list])
i = len(start_int_list)-1
start_int_list[i] += 1
while start_int_list[i] >= seq_len:
start_int_list[i] = 0
if i == 0:
start_int_list.insert(0,0)
else:
i -= 1
start_int_list[i] += 1
if __name__ =='__main__':
import doctest
doctest.testmod()
- 1. Pythonでカスタム文字列リテラルプレフィックスを作ることは可能ですか?
- 2. スウィフト3:このように範囲をフィルタリングすることが可能であったスウィフト2では範囲
- 3. Mustachio:範囲指定なしのif文は可能ですか?
- 4. 文字列を検証する方法は、Pythonで許可された文字列の範囲内です
- 5. 可変文字範囲のJava RegEx
- 6. 実行可能通知の入力範囲を選択することは可能ですか
- 7. excelで可変文字列範囲を定義する方法
- 8. 可能なパスの範囲から文字列を取得する
- 9. PythonでKey Counterを作ることは可能ですか?
- 10. インデックスエラー:文字列が範囲外ですが、範囲外になることはありませんか?
- 11. xcode4で不可視の文字をカスタマイズすることは可能ですか?
- 12. 文字列に似たオブジェクトプールを作成することは可能ですか?
- 13. リストの列挙可能範囲リストを作成するには?
- 14. CanCanの能力の範囲内で他のクラスインスタンスを呼び出すことは可能ですか?
- 15. Java - 文字の範囲内で文字列を検証する
- 16. luceneの文字列フィールドの範囲を検索可能にする
- 17. sedのエスケープ/非印字可能な文字の範囲を削除
- 18. IndexError:文字列のインデックスが範囲外です[python、scraping]
- 19. 文字エンコーディングを「嗅ぐ」ことは可能ですか?
- 20. 最終値から文字列の範囲を作成する
- 21. 文字列インデックスが範囲外であるエラーPython forループ
- 22. Pythonエラー:「IndexError:文字列インデックスが範囲外です」
- 23. インデックスエラー:文字列インデックスが範囲外ですpython
- 24. Python - IndexError:文字列インデックスが範囲外です
- 25. 文字列インデックスが範囲外です - Python
- 26. Python "IndexError:文字列インデックスが範囲外です"
- 27. Python: "IndexError:文字列インデックスが範囲外です"初心者
- 28. 文字列インデックスが範囲外です。
- 29. Excel - これは可能ですか?インデックスと範囲で複数のルックアップを使用する方法
- 30. PHP:1文字以上の文字列内の文字を変更することは可能ですか?
http://stackoverflow.com/questions/7001144/range-over-character-in-pythonの可能DUPとhttp://stackoverflow.com/questions/3190122/python-how-to-print -range-az(それぞれに良い答えがたくさんあります) – fantabolous