如何提取@
之后(如果有的话)和下一个.
(如果有的话)之前的内容?
示例:
host
host.domain.com
user@host
first.last@host
first.last@host.domain.com
first@host.domain.com
我需要在变量中获取host
。
Python中的建议?任何方法都受到欢迎。
谢谢,
编辑:我解决了我的问题。需要匹配host
和host.blah.blah
。
答案 0 :(得分:1)
您可以使用几个string.split
来电,第一个使用'@'作为分隔符,第二个使用'。'
答案 1 :(得分:0)
按'@'
进行拆分,然后进行子串。
答案 2 :(得分:0)
>>> x = "first.last@host.domain.com"
>>> x.split("@")[1].split(".")[0]
'host'
>>> y = "first.last@host"
>>> y.split("@")[1].split(".")[0]
'host'
>>>
如果字符串中没有@,则会抛出IndexError异常。
答案 3 :(得分:0)
'first.last@host.domain.com'.split('@')[1].split('.')[0]
答案 4 :(得分:0)
host = re.search(r"@(\w+)(\.|$)", s).group(1)
答案 5 :(得分:0)
这是另一个解决方案:
re.search("^.*@([^.]*).*", str).group(1)
编辑: 更好的解决方案归功于评论:
re.search("@([^.]*)[.]?", str).group(1)
答案 6 :(得分:0)
>>> s="first.last@host.domain.com"
>>> s[s.index("@")+1:]
'host.domain.com'
>>> s[s.index("@")+1:].split(".")[0]
'host'
答案 7 :(得分:0)
import re
hosts = """
user@host1
first.last@host2
first.last@host3.domain.com
first@host4.domain.com
"""
print re.findall(r"@(\w+)", hosts)
返回:
['host1', 'host2', 'host3', 'host4']