簡體   English   中英

如何查找此特定字符串的多次出現並將其拆分為列表?

[英]How do i find multiple occurences of this specific string and split them into a list?

我正在嘗試在較大的整個字符串中找到特定的字符串。

這是字符串,黑體字是我想使用python re庫中的re.findall函數提取的字詞。

文字| p1_1_SNtestfilefri01 | 天線系統 | @ |文本| p1_2_SNtestfilefri01 | ALCATEL-LUCENT | @ |文本| p1_3_SNtestfilefri01 | MW天線 | @ |文本| p1_4_SNtestfilefri01 | 直徑0.6 M 13 GHZ單極化| @ | text | p1_5_SNtestfilefri01 | L1AF10018AAAA | @ |文本| p1_6_SNtestfilefri01 | SNtestfilefri01

這是我的代碼:

open_file = open(filepath, mode='r')
doc = open_file.read()
datas = re.findall('\|(.*)\|\@\|', doc)
print(datas)

這是輸出:

['p1_1_SNtestfilefri01 | ANTENNA SYSTEM | @ |文本| p1_2_SNtestfilefri01 | ALCATEL-LUCENT | @ |文本| p1_3_SNtestfilefri01 | MW天線| @ |文本| p1_4_SNtestfilefri01 | DIA 0.6 M 13 GHZ單點POLARIZED_A ||||| 5 | 1

什么是正確的模式才能使我達到這樣的目標?

['ANTENNA SYSTEM','ALCATEL-LUCENT','MW ANTENNA','DIA 0.6 M 13 GHZ SINGLE POLARIZED','L1AF10018AAAA','SNtestfilefri01']

另外我上面提到的字符串不包含任何換行符(所有內容都在一行中)

re.findall('[^|]+(?=\|\@\|)', doc)

說明:

  • [^|]+查找不包含分隔符的文本塊
  • (?=...)是一個“超前斷言”(匹配文本,但不包括在結果中)

這是一個骯臟的解決方案,但是工作卻浮現在我頭上:

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM