关于空格的python split()问题,有人可以解释一下吗?

时间:2016-04-21 04:48:02

标签: python python-3.x split

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)时,看到它们之间的空格类似于制表符,我遇到了将它们分成字符的问题。请帮忙,我不明白我哪里出错了。

拆分代码

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])

1 个答案:

答案 0 :(得分: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