2016-06-16 59 views
0

我有一行文件。在這些行中,我只會選擇以xxx開頭的行。現在與xxx啓動線有模式如下:使用python從文件中提取某些字符串

xxx:(12:"pqrs",223,"rst",-90) 
xxx:(23:"abc",111,"def",-80) 

我想只提取字符串這是他們的第一個雙引號 即,「PQRS」和「ABC」。

任何使用正則表達式的幫助表示讚賞。

我的代碼如下:

with open("log.txt","r") as f: 
     f = f.readlines() 
    for line in f: 
     line=line.rstrip() 
     for phrase in 'xxx:': 
      if re.match('^xxx:',line): 
       c=line 
       break 

這段代碼是給我錯誤

+0

您能提供給定的輸入和所需的輸出嗎? –

+0

爲什麼不使用容易理解的分割功能呢?你想如何維護一個你無法創建的正則表達式? – Breeze

回答

0

您的代碼錯誤地縮進。您的f = f.readlines()前面有9個空格,而for line in f:有4個空格。它應該如下所示。

import re 
list_of_prefixes = ["xxx","aaa"] 
resulting_list = [] 
with open("raw.txt","r") as f: 
     f = f.readlines() 
     for line in f: 
      line=line.rstrip() 
      for phrase in list_of_prefixes: 
       if re.match(phrase + ':\(\d+:\"(\w+)',line) != None: 
        resulting_list.append(re.findall(phrase +':\(\d+:\"(\w+)',line)[0]) 
0
results = [] 
with open("log.txt","r") as f: 
    f = f.readlines() 
    for line in f: 
     if line.startswith("xxx"): 
      line = line.split(":") # line[1] will be what is after : 
      result = line[1].split(",")[0][1:-1] # will be pqrs 
      results.append(result) 

你想查找以XXX 開始行再拆就行了。之後的第一件事是你想要的 - 直到逗號。然後你的結果是那個字符串,但刪除引號。沒有必要使用正則表達式。 Python字符串函數將會很好

0

那麼你正朝着正確的方向前進。

如果輸入是這麼簡單,您可以使用正則表達式組。

with open("log.txt","r") as f: 
    f = f.readlines() 
    for line in f: 
     line=line.rstrip() 
     m = re.match('^xxx:\(\d*:("[^"]*")',line) 
     if m is not None: 
      print(m.group(1)) 

所有的魔法都在正則表達式中。

^XXX:(\ d * :(「[^」] *「)指

開始從行的開頭,配上 」XXX :(<任何數量的數字>的:「 <任何但「>」

而且由於序列「<什麼,但」 >「是在圓括號這將作爲一組(通過調用m.group(1))

PS:接下來的時間一定要包括你正在得到的確切的錯誤

+0

非常感謝。這正是我期待的。 –

0

要檢查是否符合XXX開始做

line.startswith('xxx') 

要查找第一個雙引號的文本做

re.search(r'"(.*?)"', line).group(1) 

(如match.group(1)是第一個括號子組)

所以代碼將是

with open("file") as f: 
    for line in f: 
     if line.startswith('xxx'): 
      print(re.search(r'"(.*?)"', line).group(1)) 

re module docs

+0

非常感謝。我是新的正則表達式。請給我建議一些鏈接或從哪裏我可以有正確的理解正則表達式。 thanx再次。 –

+0

@RamakantaChandra嘗試文檔。 – pacholik

相關問題