【发布时间】:2016-11-21 23:59:55
【问题描述】:
我想使用 python 从文件中打印某些数据块。基本上它应该作为解析器工作,并且只输出符合我的标准的块。
我的文件包含呼叫中心的日志。我想要以“####”开头并以"</soap:Body>>" 结尾的部分,但它还应该在我的文件中包含一个称为msisdn 的特定数字:"<msisdn>any number</msisdn>"
而且文件有点大。因此,当我执行 readlines() 时,我无法使用 for i,data in enumerate(line) 的正则表达式 这里数据被拆分,我无法搜索我需要的整个块。
文件的部分在这里:
####<Jun 4, 2016 12:05:50 PM IST> <Debug> <MessagingBridgeRuntimeVerbose> <ggneai29> <AircelESB_MS1> <[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1465022150722> <BEA-000000> <Bridge NPGBridge doTrigger(): state = 4 stopped = false>
####<Jun 4, 2016 12:05:50 PM IST> <Error> <ALSB Logging> <ggneai29> <AircelESB_MS1> <[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1465022150886> <BEA-000000> < [PipelinePairNode1, PipelinePairNode1_request, CreateVASReportingStage, REQUEST] *** CreateVASWrapper Reprting Stage VAS V-3.0 ***: <soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<VASProxyType xmlns="http://xmlns.aircel.com/AircelTransformation/ProxyService/OrderProxy/1.0/CreateVASSubscriptionConsumerSchema">
<TransactionId>DATA030620160431128801011429ADD</TransactionId>
<msisdn>8801011429</msisdn>
<productCode>DATA</productCode>
<action>ADD</action>
<IMSI>405801124044563</IMSI>
<SubsType>PrePaid</SubsType>
</VASProxyType>
</soap:Body>>
####<Jun 4, 2016 12:05:50 PM IST> <Error> <ALSB Logging> <ggneai29> <AircelESB_MS1> <[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1465022150889> <BEA-000000> < [PipelinePairNode1, PipelinePairNode1_request, Authentication, REQUEST] ***REQUEST FOR VAS V-3.0 ****: <soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<VASProxyType xmlns="http://xmlns.aircel.com/AircelTransformation/ProxyService/OrderProxy/1.0/CreateVASSubscriptionConsumerSchema">
<TransactionId>DATA030620160431128801011429ADD</TransactionId>
输出应该是:
* CreateVASWrapper Reprting阶段 VAS V-3.0 *:DATA030620160431128801011429添加 8801011429 数据 添加 405801124044563 预付 >
请帮忙!
【问题讨论】:
-
只需使用 XML 解析器;使用正则表达式会很头疼。
-
“输入的数据有误” - 什么? “请忽略它” - 不,你edit 的问题。
-
您提供的数据中没有以“>”结尾的部分。请更新问题。