Python 如何用空格替换标点符号
如果输入是Python 如何用空格替换标点符号,python,Python,如果输入是 punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""] new_s = '' for i in s: if i not in punc_list: new_s += i return new_s.lower() 我希望输出为: s = ("Hey! M'y nam;e i's") 我在用空格替换punc时遇到问题如果我不在punc\u列表中,我只
punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
new_s = ''
for i in s:
if i not in punc_list:
new_s += i
return new_s.lower()
我希望输出为:
s = ("Hey! M'y nam;e i's")
我在用空格替换punc时遇到问题如果我不在punc\u列表中,我只想在
中添加一个else语句:
,这样代码看起来像这样:
s = ('hey m y name e i s')
所有这些都表明:
如果该字符不在标点符号列表中,请将其添加到新的字符串中。
如果它在标点符号列表中,则在新的字符串中添加一个空格。如果我不在punc_列表中,我只会在中添加一个else语句:
,这样代码看起来像这样:
s = ('hey m y name e i s')
所有这些都表明:
如果该字符不在标点符号列表中,请将其添加到新的字符串中。
如果它在标点符号列表中,则在新的字符串中添加一个空格。就像@DYZ所说的,您只需要另一个条件语句,将特殊字符替换为空格:
punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
new_s = ''
for i in s:
if i not in punc_list:
new_s += i
else:
new_s += ' '
return new_s.lower()
输出看起来就像您想要的:嘿,m y nam e i s
就像@DYZ所说的,您只需要另一个用空格替换特殊字符的条件语句:
punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
new_s = ''
for i in s:
if i not in punc_list:
new_s += i
else:
new_s += ' '
return new_s.lower()
输出看起来像您想要的:hey m y name i s
使用str.translate
。将punc_列表中的所有字符转换为空格
def func(s):
punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
new_s = ''
for i in s:
if i not in punc_list:
new_s += i
else:
new_s += ' '
return new_s.lower()
s = ("Hey! M'y nam;e i's")
new_s = func(s)
print (new_s)
您可以使用dict comprehension动态创建字典映射,它将所有标点符号代码(使用ord
函数)映射到一个空格。使用str.translate
。将punc_列表中的所有字符转换为空格
def func(s):
punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
new_s = ''
for i in s:
if i not in punc_list:
new_s += i
else:
new_s += ' '
return new_s.lower()
s = ("Hey! M'y nam;e i's")
new_s = func(s)
print (new_s)
您可以使用dict comprehension动态创建字典映射,它将所有标点符号代码(使用ord
函数)映射到一个空格。使用两个循环查看此代码:
>>> punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
>>> s = "Hey! M'y nam;e i's"
>>> s.translate({ord(p): " " for p in punc_list})
'Hey M y nam e i s'
请参阅此代码,使用2个循环:
>>> punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
>>> s = "Hey! M'y nam;e i's"
>>> s.translate({ord(p): " " for p in punc_list})
'Hey M y nam e i s'
当字符是标点符号时,您忘记添加空格'
。而且,punc_列表
实际上不必是一个列表
;您只需将其设置为一个长字符串并迭代字符,或者如注释中所述,只需使用string.parantion
。为了提高查找速度,您还可以将其设置为集
,但在这种情况下,这并不重要:
punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
s = "Hey! M'y nam;e i's"
new_s = ''
for x in punc_list:
for i in s:
if i==x:
s=s.replace(i,new_s)
print(s)
或者稍微短一点,使用三元表达式:
甚至更短,使用:
甚至更短,使用正则表达式:
当字符是标点符号时,您忘记添加空格'
。而且,punc_列表
实际上不必是一个列表
;您只需将其设置为一个长字符串并迭代字符,或者如注释中所述,只需使用string.parantion
。为了提高查找速度,您还可以将其设置为集
,但在这种情况下,这并不重要:
punc_list = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","'","\""]
s = "Hey! M'y nam;e i's"
new_s = ''
for x in punc_list:
for i in s:
if i==x:
s=s.replace(i,new_s)
print(s)
或者稍微短一点,使用三元表达式:
甚至更短,使用:
甚至更短,使用正则表达式:
家庭作业问题是否有助于您了解循环?我认为学习口述和翻译也很有用
import re
def no_punc(s):
return re.sub("\W", " ", s).lower()
家庭作业问题是否有助于您了解循环?我认为学习口述和翻译也很有用
import re
def no_punc(s):
return re.sub("\W", " ", s).lower()
适用于Python 3.8.2
t = str.maketrans(dict.fromkeys(punc_list, " "))
new_s = s.lower().translate(t)
适用于Python 3.8.2
t = str.maketrans(dict.fromkeys(punc_list, " "))
new_s = s.lower().translate(t)
这是家庭作业,还是你能用正则表达式?还有,就是那些标点符号或所有特殊字符?在else
分支中,添加一个空格。@tobias_k是的,这是家庭作业。我在考虑所有特别的东西characters@DYZ哦,好的,它起作用了!非常感谢。作为旁注,我建议您使用字符串。标点符号
而不是您自己的点列表
。这是家庭作业,还是您可以使用正则表达式?还有,就是那些标点符号或所有特殊字符?在else
分支中,添加一个空格。@tobias_k是的,这是家庭作业。我在考虑所有特别的东西characters@DYZ哦,好的,它起作用了!非常感谢。作为旁注,我建议您使用字符串.标点符号
而不是您自己的点列表
。为什么不在punc_列表中使用{ord(x):''代表x
?为什么不在punc_列表中使用{ord(x):''代表x}呢
?请在代码中添加解释,以便提问者能够理解您为什么给出此解决方案及其工作原理。请在代码中添加解释,以便提问者能够理解您为什么给出此解决方案及其工作原理。