2017-07-04 51 views
0

我是Python的新手,也是本論壇的新手。下面是問題將可變長度的句子映射到特定鍵

該文件是在圖像中提到的 File Format。 我能夠文本在文本2列與下面的代碼

myfile=open('Output.csv,'w') 
wr=csv.writer(myfile,lineterminator='\n') 
df=pd.read_excel("Input.xlsx") 

for txt in df['Text2']: 
    sentence.append(txt.split('.')) 
for pharse in sentence: 
    for words in pharse: 
     wr.writerow([words]) 

我需要怎樣的判決,這是可變長度與key.Also映射幫助分解並寫入不同的行,如何實現附加映像文件中提到的特定格式。 另外,writerow函數在第一行開始寫入,但是如何指定從第三列開始。

對此非常感謝!

+0

我假定「接通''」缺失'Output.csv'僅僅是一個剪切和粘貼錯誤。 – AChampion

+0

@ AChampion.Yes。這只是複製和粘貼錯誤。對於那個很抱歉。 – user3323211

回答

0

試試這個:

myfile = open('Output.csv','w') 
wr = csv.writer(myfile, lineterminator='\n') 
entries = {} 
for k, txt1, txt2 in df.values: 
    sentences = [s.strip() for s in txt2.split('.') if len(s.strip()) > 0] 
    # sentences = [s.strip() + '.' for s in txt2.split('.') if len(s.strip()) > 0] 
    entries[k] = [txt1, sentences] 
for k in entries.keys(): 
    txt1, txt2 = entries[k] 
    wr.writerow([k, txt1, txt2[0]]) 
    for s in txt2[1:]: 
     wr.writerow(['', '', s]) 
myfile.close() 

使用替代sentences = ...行,如果你想擁有在CSV文件中的每個句子的末尾點(在上面的代碼註釋行)。從您的示例圖像中不清楚點需要發生什麼(有時出現在輸出中,有時不出現)。

此外,如果需要的話,代碼可以進一步通過兩個環結合成一個環被簡化了:

myfile = open('Output.csv','w') 
wr = csv.writer(myfile,lineterminator='\n') 
for k, txt1, txt2 in df.values: 
    sentences = [s.strip() for s in txt2.split('.') if len(s.strip()) > 0] 
    wr.writerow([k, txt1, sentences[0]]) 
    for s in sentences[1:]: 
     wr.writerow([None,'',s]) 
myfile.close() 
+0

非常感謝您的幫助!你能幫助我如何將text2列中的句子映射到鍵值。更具體地說,如果鍵值爲1,並且如果句子數爲5,則將句子分割成不同的行後,所有句子必須具有相同的鍵值。您可以在文件格式中看到關鍵值的變化。 – user3323211