我有一個文本文件,其中有代表某些數據集的行。該文件本身相當長,但它包含以下格式的某些部分:Python文件搜索行並返回匹配後的特定行數
Series_Name INFO Number of teams : n1
| Team | # | wins |
| TeamName1 | x | y |
.
.
.
| TeamNamen1 | numn | numn |
Some Irrelevant lines
Series_Name2 INFO Number of teams : n1
| Team | # | wins |
| TeamName1 | num1 | num2 |
.
其中每個部分都有一個以Series_Name開頭的標頭。每個Series_Name是不同的。帶有標題的行還包括該系列中的團隊數n1。標題行之後是一組代表數據表的行。對於每個系列,表格中都有n1 + 1行,其中每行顯示單個團隊名稱和相關聯的統計信息。 我一直在試圖實現一個功能,允許用戶搜索一個團隊名稱,然後打印出與該團隊相關聯的表中的行。但是,某些團隊名稱會出現在多個系列中。 要解決這個問題,我正在嘗試編寫我的代碼,以便用戶可以先搜索帶有系列名稱的標題行,然後僅顯示代表與該系列相關的數據的以下n1 + 1行。 這裏是我想出迄今:
import re
print
fname = raw_input("Enter filename: ")
seriesname = raw_input("Enter series: ")
def findcounter(fname, seriesname):
logfile = open(fname, "r")
pat = 'INFO Number of teams :'
for line in logfile:
if seriesname in line:
if pat in line:
s=line
pattern = re.compile(r"""(?P<name>.*?) #starting name
\s*INFO #whitespace and success
\s*Number\s*of\s*teams #whitespace and strings
\s*\:\s*(?P<n1>.*)""",re.VERBOSE)
match = pattern.match(s)
name = match.group("name")
n1 = int(match.group("n1"))
print name + " has " + str(n1) + " teams"
lcount = 0
for line in logfile:
if line.startswith(name):
if pat in line:
while lcount <= n1:
s.append(line)
lcount += 1
return result
我的代碼的第一部分工作;它匹配該人員搜索的標題行,解析該行,然後打印出該系列中有多少個團隊。由於標題行基本上告訴我表中有多少行,因此我認爲可以使用該信息構造一個循環,繼續打印每行,直到設置的計數器達到n1。但我試過運行它,並且我意識到我迄今設置它的方式是不正確的。 所以這裏是我的問題:當給定匹配後的所需行數時,如何在匹配行後返回多行?我是編程新手,如果這個問題看起來很愚蠢,我很抱歉。我一直在努力工作,沒有運氣,希望得到任何幫助。
感謝您的輸入!我會看看我是否可以像這樣工作,但爲什麼5用於range()參數? –
@Simos Anderson - 猜測你想要插入多少行。就像我說的,代碼對於你的數據不是100%,它更像是一種方法概念。 –