繁体   English   中英

我想用空格替换特殊字符

[英]I want to replace a special character with a space

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

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

问题是输出还会打印带有一个特殊字符“我的名字是/理查德”的字符串。 因此,我需要用空格替换该特殊字符,最后打印输出为“我的名字叫理查德”。 谁能帮我 ?

谢谢!

您对dict.fromkeys()调用在其参数中不包含字符/

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

例如:

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

您可以通过扩展翻译表来做到这一点:

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并将正斜杠映射为空格。 有了这个,您可以为不同的角色进行很多不同的替换。

另外,您可以按以下方式使用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替换哪个子字符串, ? 需要转义,否则它在那里有特殊含义, | 意思是:或者,所以re.sub将寻找? :,/ 第二个参数是函数,该函数返回要代替原始子字符串使用的字符: /空格和其他任何字符的空str 第三个参数是要更改的字符串。

>>> a = "My name is/Richard"
>>> a.replace('/', ' ')
'My name is Richard'

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

name.replace("/", " ")

在这里您可以找到详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM