2016-04-21 2 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 split() проблема в пробеле, может кто-нибудь объяснить?

код для разделения

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 оператор открывает файл и закрыть его, как только вы dedent до уровня with, т.е. fobj будет открыт только до вы пишете больше кода на том же уровне with (или завершите свою функцию или программу там). Это называется менеджером контекста. Контекст - это отступы, расположенные ниже with.

Пример:

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

Выход:

closed False 
closed True 
+0

благодарю вас, некоторые из них, как я прошу прощения, я звонил не так, и спасибо, что показал мне другой подход. Можете ли вы также просветить меня с помощью vs try/except. Как закрыть файл с помощью этого метода? – DST

+1

Добавлено некоторое объяснение. –

Смежные вопросы