我是Python的新手,来自Java和C语言,我如何增加一个字符?在Java或C中,字符和整数实际上是可以互换的,在某些循环中,能够执行增量字符和按字符索引数组对我来说非常有用。
我如何在Python中做到这一点?没有传统的for(;;)循环已经够糟糕的了--有没有办法在不重新考虑我的整个策略的情况下实现我想要的目标?
发布于 2010-01-29 02:28:51
在Python2.x中,只需使用ord和chr函数:
>>> ord('c')
99
>>> ord('c') + 1
100
>>> chr(ord('c') + 1)
'd'
>>> Python3.x使这项工作更有条理、更有趣,因为它明确区分了字节和unicode。默认情况下,"string“是unicode,所以上面的方法是有效的(ord接收Unicode字符,chr生成它们)。
但是如果你对字节感兴趣(比如处理一些二进制数据流),事情就更简单了:
>>> bstr = bytes('abc', 'utf-8')
>>> bstr
b'abc'
>>> bstr[0]
97
>>> bytes([97, 98, 99])
b'abc'
>>> bytes([bstr[0] + 1, 98, 99])
b'bbc'发布于 2010-01-29 02:38:51
“没有传统的for(;;)循环已经够糟糕的了”??什么?
你想要做的是
import string
for c in string.lowercase:
...do something with c...或者,您可能正在使用string.uppercase或string.letters
Python没有for(;;),因为通常有更好的方法来实现它。它也没有字符数学,因为它也不是必需的。
发布于 2017-05-07 23:01:09
我来自PHP,在那里你可以增加char (A到B,Z到AA,AA到AB等等)。使用++操作符。我用Python做了一个简单的函数来做同样的事情。您还可以将字符列表更改为任意字符(小写、大写等)。是你的需要。
# Increment char (a -> b, az -> ba)
def inc_char(text, chlist = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
# Unique and sort
chlist = ''.join(sorted(set(str(chlist))))
chlen = len(chlist)
if not chlen:
return ''
text = str(text)
# Replace all chars but chlist
text = re.sub('[^' + chlist + ']', '', text)
if not len(text):
return chlist[0]
# Increment
inc = ''
over = False
for i in range(1, len(text)+1):
lchar = text[-i]
pos = chlist.find(lchar) + 1
if pos < chlen:
inc = chlist[pos] + inc
over = False
break
else:
inc = chlist[0] + inc
over = True
if over:
inc += chlist[0]
result = text[0:-len(inc)] + inc
return resulthttps://stackoverflow.com/questions/2156892
复制相似问题