我有兩個陣列,infile
和outfile
:收件單獨的數組元素,以唯一文件
infile = ['Apple', 'Orange', 'Banana']
outfile = ['Applefile', 'Orangefile', 'Bananafile']
我搜索readin.txt
爲infile
陣列的每個元素,並且用於容納所述元件的任何行,我做了幾個的東西。這是readin.txt
樣子:
Apple = 13
Celery = 2
Orange = 5
Banana =
Grape = 4
的outfile
數組包含我想創建文件的名稱;每個對應於infile
中的元素。 infile
中的第一個元素對應於outfile
中的第一個元素(文件名),依此類推。
我遇到的問題是這段代碼:
for line in open("readin.txt", "r"):
for i in infile:
if i in line:
sp = line.split('=')
sp1 = str(sp[1])
def parseline(l):
return sp1.strip() if len(sp) > 1 and sp[1].strip() != '' else None
for s in outfile:
out = parseline(line)
outw = open(s, "w")
outw.write(str(out))
outw.close()
在代碼的第一部分,我想搜索readin.txt
從infile
(的話任何一個即Apple
,Orange
,和Banana
)。然後我希望代碼選擇出現該單詞的整個行。我知道readin.txt
中的任何這樣的行將包含一個等號,因此我希望代碼將等號旁邊的行分開,並僅生成等號後面的行。
雖然代碼的最後一部分確實爲outfile
中的每個元素創建了單獨的文件,但實際輸出始終對應於infile
的最後一個元素。就好像循環中的每個後續步驟都會覆蓋前面的步驟。我覺得我需要看 line
的第012個元素,但我不確定如何在Python中執行此操作。任何幫助都會很棒。
編輯的清晰度和有問題重開的希望:
事實上,下面的代碼似乎做正是我想要的:
for line in open("parameters.txt", "r"):
for i in infile:
if i in line:
sp = line.split('=')
sp1 = str(sp[1]).strip() if len(sp) > 1 and sp[1].strip() != '' else None
print sp1
在命令行中,我得到:
13
5
None
所以這告訴我,代碼的第一部分基本上是做什麼我希望它(雖然也許不是以最有效的方式,所以任何其他建議將不勝感激)。
在這一點上,我希望打印出來的所有信息都被寫入基於outfile數組的單個文件中。即。 13
應該被輸入到一個名爲Applefile
的文件中,None
應該被寫入一個名爲Bananafile
等的文件中。這是我遇到麻煩的地方。我知道'outfile'應該被類似地索引,所以outfile的第一個元素對應於infile的第一個元素,但是到目前爲止我的嘗試都沒有奏效。
這是我最近一次嘗試:
for line in open("parameters.txt", "r"):
for i in infile:
if i in line:
def parseline(l):
sp = l.split('=')
sp1 = str(sp[1]).strip() if len(sp) > 1 and sp[1].strip() != '' else None
if sp1:
out = parseline(line)
outw = open(outfile[i], "w")
outw.write(line)
outw.close()
在代碼中定義parseline
任何越早開始否定某種原因部分代碼的整體。
我不是在尋找答案。我想了解發生了什麼,並能夠弄清楚如何解決它。
你爲什麼在兩個循環中使用'i'?你爲什麼在循環中使用整個'line',而不是'i'?你預計什麼會發生? – jonrsharpe
@jonrsharpe很顯然,因爲我不知道自己在做什麼 - 因此我尋求幫助。我一直在使用Python正好一個星期。一些建設性的批評可能比只是公然嘲笑我更有幫助。 我正在使用整行,因爲我想提取該行的特定信息,而不僅僅是數組中定義的內容。 – user2068783
這不是一個合適的問題。我建議你閱讀[Python教程](https://docs.python.org/2/tutorial/)。 – jonrsharpe