2013-02-03 45 views
0
def read_slice(): 

    openfile=open('slicefile1.txt','r') 
    #savetofile=open('slicefile2.txt','w') 


    lines = openfile.readlines() 
    for line in lines: 
     line.slice(',')[16].split('\t') 
     print(line) 

,我想讀和解析的文件(是正確的單詞?)是在格式Python的切片和分割數據

['05,21,34,37,38,01,06', '09,16,26,36,39,02,06', '03,10,18,31,37,02,04']. 

我要回(其實寫到另一個文件)的格式

05,21,34,37,38 tab 01,06 
09,16,26,36,39 tab 02,06 

我顯然是愚蠢的,因爲我仍然無法處理列表和字符串。該函數給出了一個錯誤方法切片不可用的字符串。請幫助,如果你願意

+0

哎呀!在標籤01,06和09之間應該有一個新行,...等 – user1478335

回答

3

python字符串切片是指使用[start:stop:step] notation。你的情況,你可以簡單地使用:

'\t'.join((line[:14], line[15:])) 

分割線,並用標籤重新加入:

>>> line = '05,21,34,37,38,01,06' 
>>> line[:14] 
'05,21,34,37,38' 
>>> line[15:] 
'01,06' 
>>> '\t'.join((line[:14], line[15:])) 
'05,21,34,37,38\t01,06' 
+0

值得一提的是''「\ t」.join((line [: - 6:],line [-5 ::])) ''?因爲這更多地是關於線的最後一點,而你的線是關於線的開始。因爲你的工作現在有多少數字跟隨,這將工作,無論最後一對之前有多少。這是一個微妙的問題,很大程度上取決於OP爲什麼需要按「't」分割列表。 – sotapme

+0

@sotapme:也許; OP沒有指定格式是如何*固定的。 –

+0

坦克你。完美的作品。這種格式的原因是,我太愚蠢了使用切片和分裂,以便能夠解析沒有這種格式。我真的需要做一個教程來正確地探索這個問題,並將邏輯加入我令人沮喪的頭骨 – user1478335

0

稍微更復雜,馬亭的答案,但也許更靈活,如果更改格式或分隔符等...發生:

import csv 

with open('yourfile') as fin, open('output.csv', 'wb') as fout: 
    csvin = csv.reader(fin) 
    csvout = csv.writer(fout, delimiter='\t') 
    for row in csvin: 
     csvout.writerow([','.join(row[:5], ','.join(row[5:])]) 
+0

旁註:對於Python 3,csv文件的「open」必須有稍微不同的參數。 – pepr