![](/img/trans.png)
[英]How do I find multiple occurences of a string in a string and return the index of its location in a space-separated list?
[英]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.