我想用sp替换一个特殊字符

2024-04-25 18:50:45 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是迄今为止我掌握的代码:

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)))

问题是,输出还将打印带有一个特殊字符“My name is/Richard”的字符串。所以我需要的是用空格替换这个特殊字符,最后打印输出的是“我的名字是理查德”。有人能帮我吗?你知道吗

谢谢!你知道吗


Tags: 代码textnamedivtreetopicindextable
3条回答

您可以通过扩展转换表来实现这一点:

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)))

输出

0.My Name is Richard

您想用None替换大多数特殊字符,但用空格替换正斜杠。您可以像这里的其他答案一样使用不同的方法替换正斜杠,或者可以像上面那样扩展翻译表,将所有其他特殊字符映射到None,并将正斜杠映射到空格。有了这个,你可以有一大堆不同的替代品发生在不同的字符。你知道吗

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] = " "

或者,可以按以下方式使用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表示其他任何字符。第三个参数是要更改的字符串。你知道吗

相关问题 更多 >