2016-04-21 77 views
1
AA vowel 
AE vowel 
AH vowel 
AO vowel 
AW vowel 
AY vowel 
B stop 
CH affricate 
D stop 
DH fricative 
EH vowel 
ER vowel 
EY vowel 
F fricative 
G stop 
HH aspirate 
IH vowel 
IY vowel 
JH affricate 
K stop 
L liquid 
M nasal 
N nasal 
NG nasal 
OW vowel 
OY vowel 
P stop 
R liquid 
S fricative 
SH fricative 
T stop 
TH fricative 
UH vowel 
UW vowel 
V fricative 
W semivowel 
Y semivowel 
Z fricative 
ZH fricative 

這是文件中的內容,然後我將它們分成幾行並解析它們。問題是,當我使用line.split()或甚至re.split(r'\t+', line),看到它們之間的空白類似於一個標籤,我遇到了一個問題,它將它們分解爲字符。請幫助,我不明白我出錯的地方。python拆分()問題的空白,可以解釋一下嗎?

的分裂

try: 
     datafile = open(filename,'r') 
    except IOError: 
     print('Could not open ' + filename) 
     sys.exit() 
     pass 

    stypes = {} 

    for line in datafile.readlines(): 
     if line: 
      re.split(r'\t+', line) 
      phone = line[0] 
      type = line[1] 
     print(line[0] + ' ' + line[1] + ' ' + line[2]) 
+0

顯示你所使用的分割實際的代碼。 –

+0

@MikeMüller補充說,它有什麼不妥? – DST

+1

你用正確的字符集打開了文件嗎? –

回答

4

要打印的原始行不在列表與拆分結果的代碼。這應該更好的工作:

with open('mywords.txt') as fobj: 
    for line in fobj: 
     res = line.split() 
     print(res) 

輸出:

['AA', 'vowel'] 
['AE', 'vowel'] 

with語句打開一個文件,並會盡快爲您迪登 關閉它的with的水平,即fobj將只開放到你可以在with的同一級別編寫更多代碼 (或者在那裏結束你的功能或程序)。 這被稱爲上下文管理器。上下文是with以下的縮進行。

例子:

with open('mywords.txt') as fobj: 
    print('closed', fobj.closed) 
print('closed', fobj.closed) 

輸出:

closed False 
closed True 
+0

謝謝你,有些這是怎麼回事,我打電話是錯誤的,謝謝你給我一個不同的方法。你還可以啓發我使用vs vs try/except。我如何用這種方法關閉文件? – DST

+1

添加了一些解釋。 –

相關問題