所以我希望有一个能够读取文件并能够计算其中内容的函数。到目前为止,我有这个:
import csv
def get_stats(train_file, valid_pfile = "cmu-phonemes.txt", valid_graphemes =
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '_'}):
invalid_row = 0
valid_row = 0
phonemes_count = 0
graphemes_count = 0
underscore_count = 0
csv_open = open(train_file)
reader = csv.reader(csv_open)
with open(valid_pfile) as valid_p:
valid_pset = set(line.strip() for line in valid_p)
valid_gset = set(valid_graphemes)
您可能怀疑我想要计算一些特定内容的数量。但这并不一定很难。问题是我无法找到一种方法来遍历文件并进一步计算它。
以下是一个示例文件:
phonemes,graphemes
W IY K D EY,w ee k d ay
T EH K S T,t e x _ t
Y UW,ewe _
SH UW T,chu te
SH UW T,chu te
SH UW T,chu te !
SX AH K,s u ck
问题是如何迭代文件并将其与#34;,"分开。在中间(csv格式) 所以我可以有像
这样的东西[["SH", "UW", "T"],["chu", "te"]]
或类似的东西,可用于循环和检查。
答案 0 :(得分:1)
file_output = []
with open(valid_pfile, 'r') as f:
for line in f.readlines()[1:]: # ignoring the first line which is header
file_output.append([v.split() for v in line.split(',')])
在此块之后,file_output
的值将为:
[[['W', 'IY', 'K', 'D', 'EY'], ['w', 'ee', 'k', 'd', 'ay']],
[['T', 'EH', 'K', 'S', 'T'], ['t', 'e', 'x', '_', 't']],
[['Y', 'UW'], ['ewe', '_']],
[['SH', 'UW', 'T'], ['chu', 'te']],
[['SH', 'UW', 'T'], ['chu', 'te']],
[['SH', 'UW', 'T'], ['chu', 'te', '!']],
[['SX', 'AH', 'K'], ['s', 'u', 'ck']]]
现在,您可以按照自己的方式使用它。