Python:忽略字符串中的#/和随机数

时间:2014-01-16 07:26:04

标签: python ignore enumerate

我使用部分代码来阅读网站并废弃一些信息并将其放入Google并打印一些指示。

我遇到了一些问题。我使用的网站有时会添加一个#后跟3个随机数,然后添加一个/和另外3个数字,例如#037/100

我如何使用python忽略这个“#037/100”字符串?

我目前正在使用

for i, part in enumerate(list(addr_p)):
        if '#' in part:
                del addr_p[i]
                break

删除#如果找到,但我不知道如何为随机数做这个

有什么想法吗?

5 个答案:

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