如何增加一个字符?

我刚接触 Python,来自 Java 和 C。如何增加一个字符?在 Java 或 C 中,字符和 int 实际上是可以互换的,在某些循环中,能够按字符递增字符和索引数组对我来说非常有用。

我如何在 Python 中做到这一点?不使用传统的 for (; ;) looper 已经够糟糕的了——有没有办法不用重新考虑整个策略就能实现我想要实现的目标?

146635 次浏览

在 Python 2.x 中,只需使用 ordchr函数:

>>> ord('c')
99
>>> ord('c') + 1
100
>>> chr(ord('c') + 1)
'd'
>>>

由于 Python 3.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'

“没有一个传统的(; ;)环形使者已经够糟糕的了”? ? 什么?

你是不是想

import string
for c in string.lowercase:
...do something with c...

或者也许你正在使用 string.uppercasestring.letters

Python 没有 for(;;),因为通常有更好的方法来实现它。它也没有字符数学,因为它也没有必要。

我来自 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
def doubleChar(str):
result = ''
for char in str:
result += char * 2
return result


print(doubleChar("amar"))

output:

aammaarr

有一种方法可以增加字符使用从 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'

检查这个: 用于循环

for a in range(5):
x='A'
val=chr(ord(x) + a)
print(val)

循环输出: A B C D E

对我来说,休息是一种考验。

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)