python拆分()问题的空白,可以解释一下吗?

问题描述:

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

你用正确的字符集打开了文件吗? –

要打印的原始行不在列表与拆分结果的代码。这应该更好的工作:

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

添加了一些解释。 –