我是一名Java和C程序员,最近开始接触Python。请问如何对字符进行加1操作?在Java或C中,字符和整数几乎可以互换,在某些情况下,我可以通过增加字符来索引数组等操作,非常实用。
那么在Python中怎么做呢?不仅没有传统的for(;;)循环,还想做我想做的事情,怎么避免重新考虑我的整个策略呢?
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'
import string
for c in string.lowercase:
...do something with c...
或者你正在使用 string.uppercase
或 string.letters
呢?
Python没有 for(;;)
,因为通常有更好的方法来实现。它也没有字符运算,因为它不是必要的。
请查看:使用for循环
for a in range(5):
x='A'
val=chr(ord(x) + a)
print(val)
循环输出: A B C D E
可以使用来自 string
包的 ascii_letters
来增加字符,其中 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'
我来自PHP语言,那里你可以使用++运算符递增字符(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
def doubleChar(str):
result = ''
for char in str:
result += char * 2
return result
print(doubleChar("amar"))
输出:
aammaarr
对我来说,我把以下内容作为测试。
string_1="abcd"
def test(string_1):
i = 0
p = ""
x = len(string_1)
while i < x:
y = (string_1)[i]
i=i+1
s = chr(ord(y) + 1)
p=p+s
print(p)
test(string_1)
for
循环:for i in range(50): do_something_with(i)
。来吧,这并不难! - jathanism[''.join(i) for i in itertools.product(string.ascii_lowercase, repeat=2)]
这样的东西。该代码可以生成由小写字母组合而成、长度为2的所有可能字符串。 - SilentGhost