首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表中的regex筛选器后输出中的分隔符

列表中的regex筛选器后输出中的分隔符
EN

Stack Overflow用户
提问于 2018-05-02 14:37:35
回答 3查看 68关注 0票数 1

我对蟒蛇很陌生,所以请容忍我。

我有一份名单-

代码语言:javascript
复制
print(listoffiles)
["{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n"]

我只需要名单上的文件名,

代码语言:javascript
复制
0_HONOR_1524204351030, 0_HONOR_1524204351030,0_HONOR_1524204351030

我先把它分了-

代码语言:javascript
复制
listoffiles=[i.split(":")[0] for i in listoffiles]
print(listoffiles)
["{'0_HONOR_1524204351030'", "{'0_HONOR_1524204351030'", "{'0_HONOR_1524204351030'"]

然后加入它-

代码语言:javascript
复制
listoffiles=(','.join(str(f) for f in listoffiles))
print(listoffiles)
{'0_HONOR_1524204351030',{'0_HONOR_1524204351030',{'0_HONOR_1524204351030'

在这里,我试着脱光它-

代码语言:javascript
复制
listoffiles=(str(listoffiles).strip("'{'"))
print(listoffiles)
0_HONOR_1524204351030',{'0_HONOR_1524204351030',{'0_HONOR_1524204351030'

这似乎只适用于第一个元素,所以我也试过了-

代码语言:javascript
复制
listoffiles=(str(f).strip("'{'") for f in listoffiles)
print(listoffiles)
<generator object <genexpr> at 0x7fda38837460>

因为这也不起作用,所以我试着用正则表达式-

代码语言:javascript
复制
regex = re.compile(r'^[a-zA-Z0-9_]*$')
newlistoffiles=filter(regex.match,listoffiles)

这个看起来很管用,但我无法把输出分开-

代码语言:javascript
复制
0_HONOR_15242043510300_HONOR_15242043510300_HONOR_1524204351030

我需要帮助把它们分开。我张贴了整个问题,以便我可以得到任何其他更好和聪明的方式来完成这项任务的建议。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-02 14:47:25

使用ast模块将string转换为python,并将keys()转换为所需的键。

Ex:

代码语言:javascript
复制
import ast
listoffiles = ["{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n"]
listoffiles = map(ast.literal_eval, listoffiles)
print([i.keys()[0] for i in listoffiles])

输出:

代码语言:javascript
复制
['0_HONOR_1524204351030', '0_HONOR_1524204351030', '0_HONOR_1524204351030', '0_HONOR_1524204351030', '0_HONOR_1524204351030']
票数 1
EN

Stack Overflow用户

发布于 2018-05-02 14:43:57

您可以使用拆分来分离数据:

代码语言:javascript
复制
#!/usr/bin/env python

Data = ["{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n", "{'0_HONOR_1524204351030': 'NEW'}\n"]

for i in Data:
    i = i.strip()
    i = i[2:]
    i = i[0:i.index("'")]
    print(i)

将印刷:

代码语言:javascript
复制
0_HONOR_1524204351030
0_HONOR_1524204351030
0_HONOR_1524204351030
0_HONOR_1524204351030
0_HONOR_1524204351030
票数 0
EN

Stack Overflow用户

发布于 2018-05-02 15:03:11

下面是另一种将其分成几个列表的方法:

代码语言:javascript
复制
all_strs = [j for i, j in enumerate(lst)]

#assumes that this string format will remain constant
lsts = [list(all_strs[i])[2:23] for i, j in enumerate(all_strs)]

keys = [''.join(j) for i, j in enumerate(lsts)]
print(keys)

['0_HONOR_1524204351030',
'0_HONOR_1524204351030',
'0_HONOR_1524204351030',
'0_HONOR_1524204351030',
'0_HONOR_1524204351030']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50137307

复制
相关文章

相似问题

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