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