首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到这个特定字符串的多次出现并将它们拆分为一个列表?

如何找到这个特定字符串的多次出现并将它们拆分为一个列表?
EN

Stack Overflow用户
提问于 2019-11-26 06:10:29
回答 2查看 100关注 0票数 4

我试图在一个更大的字符串中找到一个特定的字符串。

下面是字符串,粗体的单词是我想要使用python的re库中的re.findall函数提取的。

text|p1_1_SNtestfilefri01|ANTENNA SYSTEM|@|text|p1_2_SNtestfilefri01|ALCATEL-LUCENT|@|text|p1_3_SNtestfilefri01|MW ANTENNA|@|text|p1_4_SNtestfilefri01|DIA 0.6M 13 GHZ单POLARIZED|@|text|p1_5_SNtestfilefri01|L1AF10018AAAA|@|text|p1_6_SNtestfilefri01|SNtestfilefri01

这是我的密码:

代码语言:javascript
复制
open_file = open(filepath, mode='r')
doc = open_file.read()
datas = re.findall('\|(.*)\|\@\|', doc)
print(datas)

这是输出:

SYSTEM|@|text|p1_2_SNtestfilefri01|ALCATEL-LUCENT|@|text|p1_3_SNtestfilefri01|MW 'p1_1_SNtestfilefri01|ANTENNA ANTENNA|@|text|p1_4_SNtestfilefri01|DIA 0.6M 13 GHZ单片POLARIZED|@|text|p1_5_SNtestfilefri01|L1AF10018AAAA‘

正确的模式是什么,这样我才能得到这样的结果?:

‘天线系统’,‘阿尔卡特朗讯’,'MW天线‘,'DIA 0.6M 13 GHZ单极化’,'L1AF10018AAAA','SNtestfilefri01‘

另外,我前面提到的字符串不包含任何换行符(所有内容都在一行中)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-26 06:24:03

代码语言:javascript
复制
re.findall('[^|]+(?=\|\@\|)', doc)

解释:

不包含

  • [^|]+finds的文本块是一个“前瞻性断言”(匹配文本,但结果中不包括)
票数 6
EN

Stack Overflow用户

发布于 2019-11-26 07:01:31

这是一个肮脏的解决方案,但我的头上却是工作:

代码语言:javascript
复制
import re

s = "text|p1_1_SNtestfilefri01|ANTENNA SYSTEM|@|text|p1_2_SNtestfilefri01|ALCATEL-LUCENT|@|text|p1_3_SNtestfilefri01|MW ANTENNA|@|text|p1_4_SNtestfilefri01|DIA 0.6 M 13 GHZ SINGLE POLARIZED|@|text|p1_5_SNtestfilefri01|L1AF10018AAAA|@|"

s = s.split('@')
match_list = []

for data in s:
    data += "@|"
    m = re.search('\|(.*)\|(.*)\|\@\|', data)
    if m:
        match_list.append(m.group(2))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59044758

复制
相关文章

相似问题

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