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

2024-10-03 21:33:14 发布

您现在位置: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)时,看到它们之间的空白类似于制表符,我就遇到了将它们拆分为字符的问题。救命啊,我不明白我哪里出错了。你知道吗

拆分代码

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

Tags: relineopenfilenameaasplitstopprint
1条回答
网友
1楼 · 发布于 2024-10-03 21:33:14

打印的是原始行,而不是包含拆分结果的列表。这应该更有效:

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

输出:

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

^{}语句打开一个文件,并在您退出时立即将其关闭 到with的级别,即fobj只会在您编写更多代码之前打开 在with的相同级别上(或者在那里结束函数或程序)。 这称为上下文管理器。上下文是with下面的缩进行。你知道吗

示例:

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

输出:

closed False
closed True

相关问题 更多 >