首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串中获取特定信息

从字符串中获取特定信息
EN

Stack Overflow用户
提问于 2019-03-22 17:51:20
回答 4查看 150关注 0票数 0

我和这家伙有同样的问题:

partition string in python and get value of last segment after colon

我的是这样的:

代码语言:javascript
复制
IP-Adress: 1.1.1.1 Device: Fritzbox Serialnumber: 123456789

我只想得到设备,所以我的输出应该是这样的:"Fritzbox“我不需要其他任何东西。

代码语言:javascript
复制
result = mystring.rpartition(':')[2]

使用这种代码,这是可能的吗?如果是,我必须改变什么才能去掉剩下的部分?

EN

回答 4

Stack Overflow用户

发布于 2019-03-22 18:09:29

你可以在这里使用re.split并使用结果来创建一个字典-这样你就可以访问任何你想要的键,例如:

代码语言:javascript
复制
import re

text = 'IP-Adress: 1.1.1.1 Device: Fritzbox Serialnumber: 123456789 Description: something or other here test: 5'
split = re.split(r'\s*(\S+):\s+', text)
data = dict(zip(split[1::2], split[2::2]))

这将为您提供一个data

代码语言:javascript
复制
{'IP-Adress': '1.1.1.1',
 'Device': 'Fritzbox',
 'Serialnumber': '123456789',
 'Description': 'something or other here',
 'test': '5'}

然后根据需要访问它,例如:

代码语言:javascript
复制
device = data.get('Device', '***No Device Found???***')

通过这种方式,您可以访问所有键/值对,而不依赖于键的任何顺序或它们在文本中的实际存在。

票数 2
EN

Stack Overflow用户

发布于 2019-03-22 17:53:37

假设'Device:'始终存在,下面的Regular expression应该可以为您工作:

代码语言:javascript
复制
s = 'IP-Adress: 1.1.1.1 Device: Fritzbox Serialnumber: 123456789'

import re
re.search(r'Device:\s*(\w+)', s).group(1)
# 'Fritzbox'

或者,如果你更喜欢字符串方法,你可以这样做:

代码语言:javascript
复制
s.split(':')[-2].strip().split()[0]
# 'Fritzbox'
票数 1
EN

Stack Overflow用户

发布于 2019-03-22 18:00:50

假设Device:Serialnumber始终存在:

代码语言:javascript
复制
s = 'IP-Adress: 1.1.1.1 Device: Fritzbox Serialnumber: 123456789'

def GetInBetween(s, st, ed):
  return (s.split(st))[1].split(ed)[0]

print(GetInBetween(s, 'Device:', 'Serialnumber').strip())

输出

代码语言:javascript
复制
Fritzbox

编辑

如果您有这些字符串的列表:

代码语言:javascript
复制
sList = ['IP-Adress: 1.2.2.2 Device: Fritzbox Serialnumber: 123456789',
        'IP-Adress: 1.3.4.3 Device: Macin Serialnumber: 123456789',
        'IP-Adress: 1.123.12.11 Device: IBM Serialnumber: 123456789',
         ]

for elem in sList:
    print(GetInbetween(elem, 'Device:', 'Serialnumber').strip())

使用list comprehension

代码语言:javascript
复制
print([GetInbetween(x, 'Device:', 'Serialnumber').strip() for x in sList])

输出

代码语言:javascript
复制
['Fritzbox', 'Macin', 'IBM']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55296942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档