问题:如何增加一个字符?
我是Python的新手,来自Java和C。如何增加char?在Java或C中,char和int实际上是可以互换的,并且在某些循环中,能够递增char和按char索引数组对我来说非常有用。
如何在Python中执行此操作?没有传统的for(;;)循环程序就够了-我有什么方法可以在不重新考虑整个策略的情况下实现我想要的目标?
回答 0
在Python 2.x中,只需使用ord
和chr
函数:
>>> ord('c')
99
>>> ord('c') + 1
100
>>> chr(ord('c') + 1)
'd'
>>>
Python 3.x使得字节和unicode之间有明显的区别,这使它变得更有条理和有趣。默认情况下,“字符串”是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'
回答 1
“足够糟糕,没有传统的for(;;)循环程序”?什么?
你想做吗
import string
for c in string.lowercase:
...do something with c...
也许您正在使用string.uppercase
或string.letters
?
Python没有,for(;;)
因为通常有更好的方法来执行它。它也没有字符数学,因为也没有必要。
回答 2
我来自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 result
回答 3
有一种使用ascii_letters
from string
包增加字符的方法,该包ascii_letters
是一个包含所有英文字母,大写和小写字母的字符串:
>>> from string import ascii_letters
>>> ascii_letters[ascii_letters.index('a') + 1]
'b'
>>> ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
也可以手动完成;
>>> letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> letters[letters.index('c') + 1]
'd'
回答 4
检查一下:使用循环
for a in range(5):
x='A'
val=chr(ord(x)+a)
print(val)
输出:ABCBDE
回答 5
def doubleChar(str):
result = ''
for char in str:
result += char * 2
return result
print(doubleChar("amar"))
输出:
aammaarr