字符串替换似乎不起作用[重复]
- 2025-03-05 09:17:00
- admin 原创
- 89
问题描述:
我最初尝试使用=
运算符来分配值但它返回一个错误,然后我尝试使用string.replace()
:
encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
和
encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 2)
但它返回的是原始值。
帮助如何正确使用替换 API 以给出正确的结果另外是否有任何其他 API 可以代替unichr()
。
encrypted_str
从用户那里获取的是encrypted_str = raw_input()
dec_str2
用户输入的频率字符串。这个问题几乎与变量无关,我想知道我是否replcae()
错误地使用了 API,因为它给了我不变的输出,encrypted_str
我们可以使用它encrypted_str[j]
会从字符串中返回一个字符来定义 API 的子字符串replace()
。我使用了encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 1)
最大替换 1 而不是 2(因为我只需要一个替换)。
我需要完成的实际操作将在 C 中执行,如下所示:
encrypted_str[j] = dec_str2[k] -32
。
由于我是 Python 新手,因此我正在尝试寻找替代品。
解决方案 1:
Python 中的字符串是不可变的。这意味着给定的字符串对象在创建后永远不会改变其值。这就是为什么像这样的元素赋值some_str[4] = "x"
会引发异常的原因。
出于类似的原因,该类提供的任何方法都不str
能改变字符串。因此,该str.replace
方法无法按您期望的方式工作。它不会就地修改字符串,而是返回一个带有请求替换的新字符串。
尝试:
encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
如果要进行许多这样的替换,则将字符串转换为字符列表、逐个进行修改、然后str.join
在完成后将列表重新转换为字符串可能会更有意义。
解决方案 2:
Python 字符串是不可变的。这意味着字符串不能通过方法调用进行修改,如您的文章中所述。您必须使用赋值才能使用方法调用返回的字符串。
例如:
encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
现在encrypted_str
包含新值。
解决方案 3:
你应该给它起个名字,
str1 = "abc.."
print str1.replace("..","")
'abc'
print str1
'abc..'
str1 = str1.replace("..","")
print str1
'abc'
迭代:
str = ['a','..']
for i in str:
str1= str1.replace(i, '')
print(str1)
#'bc'
解决方案 4:
我认为你必须先剥去那条线。
line = line.rstrip()
print(line.replace('', ''))
扫码咨询,免费领取项目管理大礼包!