我使用部分代码来阅读网站并废弃一些信息并将其放入Google并打印一些指示。
我遇到了一些问题。我使用的网站有时会添加一个#后跟3个随机数,然后添加一个/和另外3个数字,例如#037/100
我如何使用python忽略这个“#037/100”字符串?
我目前正在使用
for i, part in enumerate(list(addr_p)):
if '#' in part:
del addr_p[i]
break
删除#如果找到,但我不知道如何为随机数做这个
有什么想法吗?
答案 0 :(得分:2)
如果您发现自己希望从字符串s
中删除“三位数后跟一个正斜杠后跟三位数”,则可以
import re
s = "this is a string #123/234 with other stuff"
t = re.sub('#\d{3}\/\d{3}', '', s)
print t
结果:
'this is a string with other stuff'
说明:
# - literal character '#'
\d{3} - exactly three digits
\/ - forward slash (escaped since it can have special meaning)
\d{3} - exactly three digits
与上述匹配的整个事物(如果它存在的话)被替换为'' - 即“删除”。
答案 1 :(得分:1)
import re
re.sub('#[0-9]+\/[0-9]+$', '', addr_p[i])
我不是正则表达式的巫师,但我想你可以这样。 你甚至可以在正则表达式中处理'@'。
答案 2 :(得分:0)
我会将你的问题翻倍并与正则表达式匹配。
import re
regex = re.compile(r'([\w\s]+)#\d+\/\d+([\w\s]+)')
m = regex.match('This is a string with a #123/987 in it')
if m:
s = m.group(1) + m.group(2)
print(s)
答案 3 :(得分:0)
如果格式始终相同,那么您可以检查行是否以#开头,然后将字符串设置为自己而不包含前8个字符。
如果part [0:1] =='#': part = part [8:]
如果第一个字母是#,则将字符串设置为自身,从第8个字符到结尾。
答案 4 :(得分:0)
一种更简洁的方法:
import re
s = "this is a string #123/234 with other stuff"
t = re.sub(r'#\S+', '', s)
print(t)