我想用空格替换特殊字符

问题描述 投票:0回答:5

这是我到目前为止的代码:

dex = tree.xpath('//div[@class="cd-timeline-topic"]/text()')
names = filter(lambda n: n.strip(), dex)
table = str.maketrans(dict.fromkeys('?:,'))
for index, name in enumerate(dex, start = 0):

print('{}.{}'.format(index, name.strip().translate(table)))

问题是输出将打印一个特殊字符“我的名字是/理查德”的字符串。所以我需要的是用空格替换那个特殊字符,最后打印输出将是“我的名字是理查德”。谁能帮我 ?

谢谢!

python
5个回答
1
投票

你对dict.fromkeys()的调用在其论证中不包括字符/

如果你想将所有特殊字符映射到None,只需将特殊字符列表传递给dict.fromkeys()即可。如果你想用空格替换它们,你可以遍历dict并为每个键设置值为

例如:

special_chars = "?:/"
special_char_dict = dict.fromkeys(special_chars)
for k in special_char_dict:
    special_char_dict[k] = " "

0
投票

您可以通过扩展转换表来完成此操作:

dex = ["My Name is/Richard????::,"]
table = str.maketrans({'?':None,':':None,',':None,'/':' '})
for index, name in enumerate(dex, start = 0):

    print('{}.{}'.format(index, name.strip().translate(table)))

OUTPUT

0.My Name is Richard

你想用None替换大多数特殊字符但是用空格替换正斜杠。您可以使用其他方法替换正斜杠,如此处的其他答案,或者您可以如上所述扩展您的转换表,将所有其他特殊字符映射到None并将斜杠转换为空格。有了这个,你可以为不同的角色发生一大堆不同的替换。


0
投票

或者你可以使用re.sub函数:

import re
s = 'Te/st st?ri:ng,'
out = re.sub(r'\?|:|,|/',lambda x:' ' if x.group(0)=='/' else '',s)
print(out) #Te st string

re.sub的参数含义如下:第一个是模式 - 它通知re.sub要替换的子串,?需要被转义,否则它具有特殊意义,|意味着:或者,所以re.sub将寻找?:,/。第二个参数是返回用于代替原始子串的字符的函数:/的空间和其他任何东西的空str。第三个参数是要更改的字符串。


-1
投票
>>> a = "My name is/Richard"
>>> a.replace('/', ' ')
'My name is Richard'

-1
投票

要从字符串中替换任何字符或字符序列,您需要使用`.replace()'方法。所以你的答案的解决方案是:

name.replace("/", " ")

here you can find details

© www.soinside.com 2019 - 2024. All rights reserved.