Python 3.x 在Python中对字符串的重复字符进行编码
我试图对字符串进行编码,以将字符替换为“(”如果它只出现一次,如果它出现多次,则替换为“)”。所以“hello”变成了“(())(”。我正在使用字典来解决这个问题。我正在保存字符串中每个字符的出现次数。然后我检查该字符是否出现多次,然后使用.replace()将其替换为“)”,或者将其替换为“(”。当字符串包含“)”时,就会出现问题 例如,如果我有字符串“abca”。我应该得到“(())”作为结果,但我得到“((((((((((()因为当程序到达时”)”它只看到它发生过一次,然后用“(”)更改每一次出现的“)”。它在其余时间工作正常。下面是我的代码:Python 3.x 在Python中对字符串的重复字符进行编码,python-3.x,string,dictionary,replace,character-encoding,Python 3.x,String,Dictionary,Replace,Character Encoding,我试图对字符串进行编码,以将字符替换为“(”如果它只出现一次,如果它出现多次,则替换为“)”。所以“hello”变成了“(())(”。我正在使用字典来解决这个问题。我正在保存字符串中每个字符的出现次数。然后我检查该字符是否出现多次,然后使用.replace()将其替换为“)”,或者将其替换为“(”。当字符串包含“)”时,就会出现问题 例如,如果我有字符串“abca”。我应该得到“(())”作为结果,但我得到“((((((((((()因为当程序到达时”)”它只看到它发生过一次,然后用“(”)更改每
def duplicate_encode(word):
count = {}
word = word.lower()
for ch in word:
if ch in count:
count[ch] += 1
else:
count[ch] = 1
for k in count:
if count[k] > 1:
word = word.replace(k, ')')
else:
word = word.replace(k, '(')
print(word)
duplicate_encode("abca)")
使用以下代码,它将工作
A=input()
b=list(A)
c=list(set(A))
for i in c:
if b.count(i)>1:
A=A.replace(i,")")
elif b.count(i)==1:
A=A.replace(i,"(")
print(A)
代码中有两个错误:
中唯一(和尾随)的word
导致final(
,这样所有word=replace(word,“(”,“))
s都被(
s替换;因此,我从头开始构建)
字符串外部
如果len(count)
中有任何重复字符,则word
必须在k
上迭代,而不是在word
上迭代count
def duplicate_encode(word):
count = {}
outword = ''
word = word.lower()
for ch in word:
if ch in count:
count[ch] += 1
else:
count[ch] = 1
for k in word:
if count[k] > 1:
outword += ')'
else:
outword += '('
print( word, '=>', outword )
duplicate_encode("abca)")
duplicate_encode("hello")
输出:\SO\67089558.py
abca) => )(()(
hello => (())(
非常感谢。我现在明白了,从另一个列表(比如代码中的b和c)进行比较比从一个单独的列表(比如我在使用字典)进行比较更好,因为字典让解释器检查字符串中所有出现的字符。
outword='.join([')if count[k]>1 else'('for k in word])
是word中k的的Python版本:
循环…谢谢Josef!我现在看到我的错误,我在迭代count
而不是word
,没有注意到如果有重复字符,count
的长度会更短。同样感谢Python版本。