首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串中删除不需要的键值对

从字符串中删除不需要的键值对
EN

Stack Overflow用户
提问于 2018-03-09 03:43:36
回答 4查看 48关注 0票数 0

因此,我有以下字符串:

代码语言:javascript
复制
__cfduid=dc3c9f85f65d39a5947d5f4850618237f1520566503; expires=Sat, 09-Mar-19 03:35:03 GMT; path=/; domain=.coinmarketcap.com; HttpOnly, _version=a90f44e909c03fdad3caed1ec676a98472deb0f6; path=/, __session=NTgybXJTVFdKcjlrbG5JKsnaVm9V6SBhUWtxV0oxc3JZNTZUekRGb3RvYjFpZDF5WHNab2N0T3VxTDdzY1JnOGR0ZzdtUzdRZDQ3NjVwU2Lod93GG9lalMwMGNheUUybm45Q20rWWlSRUZ5YUlzNVZmd3h3b200TmR2cnRHUWY4OUxrVml3T2hMMUdrdXZOc0V6TnBxOHFBPT0tLTMyV0R3emYxME9OeDQ3cDJ4LzJycmc9PQ%3D%3D--67cb39476896467f47bdd13bb638fd5479883974; domain=.coinmarketcap.com path=/

但是,我需要从这里移除垃圾,比如

代码语言:javascript
复制
expires=Sat, 09-Mar-19 03:35:03 GMT

代码语言:javascript
复制
domain=.coinmarketcap.com path=/

所以我只留下了三个值:

代码语言:javascript
复制
__cfduid=dc3c9f85f65d39a5947d5f4850618237f1520566503; _version=a90f44e909c03fdad3caed1ec676a98472deb0f6; __session=NTgybXJTVFdKcjlrbG5JKsnaVm9V6SBhUWtxV0oxc3JZNTZUekRGb3RvYjFpZDF5WHNab2N0T3VxTDdzY1JnOGR0ZzdtUzdRZDQ3NjVwU2Lod93GG9lalMwMGNheUUybm45Q20rWWlSRUZ5YUlzNVZmd3h3b200TmR2cnRHUWY4OUxrVml3T2hMMUdrdXZOc0V6TnBxOHFBPT0tLTMyV0R3emYxME9OeDQ3cDJ4LzJycmc9PQ%3D%3D--67cb39476896467f47bdd13bb638fd5479883974
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-09 03:48:43

指定要保留的键:

代码语言:javascript
复制
In [193]: keys = ['__cfduid', '_version', '__session']

现在,调用re.findall (import re first):

代码语言:javascript
复制
In [194]: ' '.join(re.findall(r'(?:{}).*?;'.format('|'.join(keys)), text)
Out[194]: '__cfduid=dc3c9f85f65d39a5947d5f4850618237f1520566503; _version=a90f44e909c03fdad3caed1ec676a98472deb0f6; __session=NTgybXJTVFdKcjlrbG5JKsnaVm9V6SBhUWtxV0oxc3JZNTZUekRGb3RvYjFpZDF5WHNab2N0T3VxTDdzY1JnOGR0ZzdtUzdRZDQ3NjVwU2Lod93GG9lalMwMGNheUUybm45Q20rWWlSRUZ5YUlzNVZmd3h3b200TmR2cnRHUWY4OUxrVml3T2hMMUdrdXZOc0V6TnBxOHFBPT0tLTMyV0R3emYxME9OeDQ3cDJ4LzJycmc9PQ%3D%3D--67cb39476896467f47bdd13bb638fd5479883974;'

regex (?:{}).*?;指定您只想为这些选定的键找到键值对。其他的都被丢弃了。只要您的字符串具有一致的结构((key=value;)+)即可工作。

票数 0
EN

Stack Overflow用户

发布于 2018-03-09 04:09:35

对于以下划线开头的任何键,这都是更通用的解决方案。

代码语言:javascript
复制
import re
str_list = re.findall(r"_\w+=\w+", your_string)

out:
    ['__cfduid=dc3c9f85f65d39a5947d5f4850618237f1520566503',
     '_version=a90f44e909c03fdad3caed1ec676a98472deb0f6',
     '__session=NTgybXJTVFdKcjlrbG5JKsnaVm9V6SBhUWtxV0oxc3JZNTZUekRGb3RvYjFpZDF5WHNab2N0T3VxTDdzY1JnOGR0ZzdtUzdRZDQ3NjVwU2Lod93GG9lalMwMGNheUUybm45Q20rWWlSRUZ5YUlzNVZmd3h3b200TmR2cnRHUWY4OUxrVml3T2hMMUdrdXZOc0V6TnBxOHFBPT0tLTMyV0R3emYxME9OeDQ3cDJ4LzJycmc9PQ']

re.findall返回list,您可以加入它以获得所需的输出。

代码语言:javascript
复制
 "; ".join(str_list)
票数 0
EN

Stack Overflow用户

发布于 2018-03-09 04:52:53

另一种方法,

代码语言:javascript
复制
keys = ('__cfduid', '_version', '__session')
' '.join([x for x in text.split() if x.startswith(keys)])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49186267

复制
相关文章

相似问题

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