【发布时间】:2017-10-06 01:07:45
【问题描述】:
我有一个输入字符串,如:-
a=1|b=2|c=3|d=4|e=5 and so on...
我想做的是从一个很长的类似模式的字符串中提取 d=4 部分。有没有办法根据起点分隔符和终点分隔符获取子字符串?
这样,我可以从 'd=' 开始搜索直到 '|'提取其价值。欢迎任何见解。
【问题讨论】:
标签: python string python-2.7 python-3.x substring
我有一个输入字符串,如:-
a=1|b=2|c=3|d=4|e=5 and so on...
我想做的是从一个很长的类似模式的字符串中提取 d=4 部分。有没有办法根据起点分隔符和终点分隔符获取子字符串?
这样,我可以从 'd=' 开始搜索直到 '|'提取其价值。欢迎任何见解。
【问题讨论】:
标签: python string python-2.7 python-3.x substring
你可以试试这个 "startswith" ,具体你想要哪个变量的值
string = " a=1|b=2|c=3|d=4|e=5 "
array = string.split("|")
for word in array:
if word.startswith("d"):
print word
【讨论】:
你可以在这里使用regex:
>>> data = 'a=1|b=2|c=3|d=4|e=5'
>>> var = 'd'
>>> output = re.search('(?is)('+ var +'=[0-9]*)\|',data).group(1)
>>> print(output)
'd=4'
或者您也可以使用split,这是更推荐的选项:
>>> data = 'a=1|b=2|c=3|d=4|e=5'
>>> output = data.split('|')
>>> print(output[3])
'd=4'
或者你也可以使用dic:
>>> data = 'a=1|b=2|c=3|d=4|e=5'
>>> output = dict(i.split('=') for i in data.split('|'))
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'e': '5'}
>>> output ['d']
'4'
【讨论】:
i[0]:i[2] 不适用于 'foo=123' 之类的子字符串。
= 上调用split 两次,这就是为什么我对存储整数的字典使用for 循环,
dict() 来实现同样的效果,应该吗?
dict 构造函数接受一个可迭代的 2 元素元组,并且在 = 上拆分会生成这些元组。
构建字典!
>>> s = 'a=1|b=2|c=3|d=4|e=5'
>>> dic = dict(sub.split('=') for sub in s.split('|'))
>>> dic['d']
'4'
如果要存储整数值,请使用for 循环:
>>> s = 'a=1|b=2|c=3|d=4|e=5'
>>> dic = {}
>>> for sub in s.split('|'):
... name, val = sub.split('=')
... dic[name] = int(val)
...
>>> dic['d']
4
【讨论】: