У меня есть два файла с одинаковым количеством столбцов, но с другим количеством строк. Один файл представляет собой список временных меток и список слов, второй файл представляет собой список временных меток со списком звуков в каждом из слов, то есть ,:Объединить два файла разной длины в Python
9640 12783 she
12783 17103 had
...
и:
9640 11240 sh
11240 12783 iy
12783 14078 hv
14078 16157 ae
16157 16880 dcl
16880 17103 d
...
Я хочу, чтобы объединить эти два файла и создать список записей со словами в качестве одного значения, и фонетической транскрипции как другой, то есть ,:
[['she', 'sh iy']
['had', 'hv ae dcl d']
...
Я полный Python (и программирование) нуб , но мой Первоначальная идея состояла в том, чтобы сделать это, выполнив поиск второго файла для второго поля в первом файле, а затем добавив его в список. Я пытался делать это так:
word = open('SA1.WRD','r')
phone = open('SA1.PHN','r')
word_phone = []
for line in word.readlines():
words = line.split()
word = words[2]
word_phone.append(word)
for line in phone.readlines():
phones = line.split()
phone = phones[2]
if int(phones[1]) <= int(words[1]):
word_phone.append(phone)
print word_phone
Это выход:
['she', 'had', 'your', 'dark', 'suit', 'in', 'greasy', 'wash', 'water', 'all', 'year', 'sh', 'iy', 'hv', 'ae', 'dcl', 'd', 'y', 'er', 'dcl', 'd', 'aa', 'r', 'kcl', 'k', 's', 'uw', 'dx', 'ih', 'ng', 'gcl', 'g', 'r', 'iy', 's', 'iy', 'w', 'aa', 'sh', 'epi', 'w', 'aa', 'dx', 'er', 'q', 'ao', 'l', 'y', 'iy', 'axr']
Как я уже сказал, я в общей сложности нуб, и некоторые предложения были бы очень полезны.
Обновление: Я хотел бы пересмотреть этот вопрос, если это возможно. Я изменил код Lattyware, чтобы работать на каталоге:
phns = []
wrds = []
for root, dir, files in os.walk(sys.argv[1]):
wrds = wrds + [ os.path.join(root, f) for f in files if f.endswith('.WRD') ]
phns = phns + [ os.path.join(root, f) for f in files if f.endswith('.PHN') ]
phns.sort()
wrds.sort()
files = (zip(wrds,phns))
#OPEN THE WORD AND PHONE FILES, COMPARE THEM
output = []
for file in files:
with open(file[0]) as unsplit_words, open(file[1]) as unsplit_sounds:
sounds = (line.split() for line in unsplit_sounds)
words = (line.split() for line in unsplit_words)
output = output + [
(word, " ".join(sound for _, _, sound in
takeuntil(sounds, stop)))
for start, stop, word in words
]
Существует некоторая информация, которую я хотел бы сохранить в этих путей файлов файлов. Мне было интересно, как я мог бы идти о Добавляя путь раскола файла кортежей в списке этот код возвращается, например,
[('she', 'sh iy', 'directory', 'subdirectory'), ('had', 'hv ae dcl d', 'directory', subdirectory')]
Я полагал, что я мог бы я мог разделить пути, а затем заархивировать списки вместе, но 53 000 общих элементов в списке выведенных выше выходов, но обрабатывается только 6300 пар файлов.
Если это домашнее задание, добавьте тег 'homework'. –
Это на самом деле часть более крупной исследовательской программы (вне класса), но спасибо за уведомление. – UWLinguist
ОК. Извините за неприятность и подозрительность :-). –