使用python中的给定列表删除字符串中的特定字符
我正在尝试使用上述代码删除字符串中的特定字符。这里有什么问题?字符串是不可变的。因此,您希望将其重新分配。使用python中的给定列表删除字符串中的特定字符,python,Python,我正在尝试使用上述代码删除字符串中的特定字符。这里有什么问题?字符串是不可变的。因此,您希望将其重新分配。 i是一个变量。通过使用“i”将其视为字符串。 试一试 问题如下: 字符串是不可变的。您需要将字符串设置为替换函数中的字符串 您检查了该字符是否与字符串“i”而不是变量i等效 您缩进了return语句,以便在第一次替换之后调用它。如果未替换,它将返回None 代码如下: punctuation_chars = ["'", '"', ",",
i
是一个变量。通过使用“i”
将其视为字符串。
试一试
问题如下:
“i”
而不是变量i
等效None
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']
def strip_punctuation(x):
for i in punctuation_chars:
if i in x:
x= x.replace(i,"")
return x
m= "Twi@sd"
t=strip_punctuation(m)
print(t)
输出:
Twisd
只要给变量起个更有意义的名字,如果。。。在mystring中,您将看到以下问题:
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']
def strip_punctuation(x):
for i in punctuation_chars:
for j in x:
if i == j:
# print(i)
x = x.replace(i, "")
return x
m = "Twi@sd"
t = strip_punctuation(m)
print(t)
这就产生了
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']
def strip_punctuation(string):
for char in punctuation_chars:
string = string.replace(char, "")
return string
m = "Twi@sd"
t = strip_punctuation(m)
print(t)
或者,使用正则表达式,最终它们就是为了:
Twisd
Replace方法不是就地方法,需要将值存储到变量中才能使用它 为此,也不需要内部循环 查看解决方案,如果有任何疑问,请发表评论 代码: 输出:
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']
def strip_punctuation(x):
for i in punctuation_chars:
if i in x:
x=x.replace(i, '')
return x
m= "Twi@s:d"
t=strip_punctuation(m)
print(t)
循环使用
标点符号\u字符
并替换每个字符
Twisd
str.replace()
返回一个新字符串,因此每次都必须将其分配给一个新变量(python字符串是不可变的)replace
方法不是就地操作,因为字符串在python中是不可变的。您正在屏蔽i
。您预期的输出是什么x==“i”
检查字符串“i”
而不是变量i
。你用下一个循环来掩盖前一个循环的i
变量,对于x中的i是的,我做了。它工作得很好。不知道你为什么拒绝我。为什么不复制并粘贴它,然后自己试着运行它呢?现在它已经修复了。。我要编辑它并添加解释。@Jan你什么时候运行的?在我7分钟前编辑它之前?它为我返回Twisd。@Jan关于缩进错误,你是对的。当我编辑并试图将其粘贴回时,它不会格式化,所以我必须手动将其隔开以格式化。我知道。无论哪种方式,逻辑都是有效的,我只是修复了缩进。您可以避免if char in string:
,因为它只有在可用时才会替换。
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']
def strip_punctuation(x):
for i in punctuation_chars:
if i in x:
x=x.replace(i, '')
return x
m= "Twi@s:d"
t=strip_punctuation(m)
print(t)
Twisd
def strip_punctuation(x):
for c in punctuation_chars:
x = x.replace(c, "")
return x