Python 拆分并从末尾提取n个单词

Python 拆分并从末尾提取n个单词,python,list,slice,Python,List,Slice,你将如何从一条分割线中提取最后n个结束词?例如,我有以下几行: 1. 123.by2.gateway.edge.messenger.live.com 2. messenger.com 3. 10.17.123.45 4. 126.by2.gateway.edge.messenger.live.com 5. 14.messenger.live.com 我想从地址中提取最后三个字,以便第1、4和5行的“messenger.live.com”和第2和第3行保持不变。这是我为实现这一目标所做的,但似乎

你将如何从一条分割线中提取最后n个结束词?例如,我有以下几行:

1. 123.by2.gateway.edge.messenger.live.com
2. messenger.com
3. 10.17.123.45
4. 126.by2.gateway.edge.messenger.live.com
5. 14.messenger.live.com
我想从地址中提取最后三个字,以便第1、4和5行的“messenger.live.com”和第2和第3行保持不变。这是我为实现这一目标所做的,但似乎是站不住脚的:

link = line.split('.') 
if len(link) > 4: # to bypass the IP address
    plink = link[-1:-3] ?
你想带走吗

plink = link[-3:]
要忽略数字IP,可以使用以下方法:

link = line.split('.')
if len(link) > 3 and link[-1].isalpha():
    plink = link[-3:]
这将忽略2。和3.,同时进行第5步。正确(正如SilentGhost正确指出的那样,您的代码忽略了5。)

您想要的

plink = link[-3:]
要忽略数字IP,可以使用以下方法:

link = line.split('.')
if len(link) > 3 and link[-1].isalpha():
    plink = link[-3:]

这将忽略2。和3.,同时进行第5步。正确(正如SilentGhost正确指出的,您的代码忽略了5。)

拆分后的第5行将有4个元素。拆分后的第5行将有4个元素。在我向上述代码添加行:group.setdefault(plink,dict()).setdefault(host,0)后,它会给出错误消息:TypeError:unhable type:'list'。为什么?@Adia-不能将列表用作字典键。将其转换为
tuple(link)
。。首先连接(link)
-字符串。将链接转换为tuple后,它会说:“AttributeError:'NoneType'对象没有属性“split”。@Adia-对不起,请使用
plink
,而不是
link
。实际上我也是这样做的:plink=tuple(link[-3:]),仍然提供“NoneType”对象没有属性“split”。在我将行:group.setdefault(plink,dict()).setdefault(host,0)添加到上述代码后,它会提供错误消息:TypeError:Unhabable type:“list”。为什么?@Adia-不能将列表用作字典键。将其转换为
tuple(link)
。。首先连接(link)
-字符串。将链接转换为tuple后,它会说:“AttributeError:'NoneType'对象没有属性“split”。@Adia-对不起,请使用
plink
,而不是
link
。实际上我也是这样做的:plink=tuple(link[-3:]),仍然提供的“非类型”对象没有属性“拆分”。