出于某种原因,我无法从字符串中删除垂直条。此字符串是从html标记(BeautifulSoup 4)中提取的。
该字符串来自网站的标题元标记。
示例输入:'如何快速运行| running.com“
通过if语句,字符串仍然包含|,但它没有在名称中检测到,也从不输入if语句......
name = title.text.encode('ascii', 'ignore').strip()
#remove everything after | because often it is SEO stuff
name = re.sub('\|', '', name) #fails
if "|" in name:
lineIndex = name.index('|')
name = name[:lineIndex]
答案 0 :(得分:2)
您需要将正则表达式视为原始字符串:
s = 'How to run very fast | running.com'
s = re.sub(r'\|', '', s)
>>> print s
How to run very fast running.com
答案 1 :(得分:2)
如果您尝试删除“|”后的所有内容,则应更改正则表达式。
x = 'Blah | blah'
x = re.sub('\|.*', '', x)
>>> print x
'Blah '
答案 2 :(得分:1)
您可以使用translate()
方法进行此操作。
删除deletechars中的所有字符(如果存在),和 然后使用表格翻译字符,表格必须是 256个字符的字符串,为每个字符值提供翻译, 由其序数索引。如果table为None,则只有字符 执行删除步骤。
示例:
s = 'How to run very fast | running.com'
print s
s = s.translate(None, '|')
print s
输出:
How to run very fast | running.com
How to run very fast running.com
或使用replace
方法:
foo = 'How to run very fast | running.com'
bar = foo.replace("|", "")
print foo
print bar
输出:
How to run very fast | running.com
How to run very fast running.com
答案 3 :(得分:1)
在第一个之前获取所有内容发生应该有效:
name = name.split('|')[0]
如果还想丢弃尾随和前导空格:
name = name.strip()
(注意,即使名字不在名称中也会有效)