假设我有这样一个示例csv文件:
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
我想检查每一行的具体情况。当我试图遍历每一行时,当一行中的元素满足条件时,我想将我的计数器增加1,并继续检查下一行,而不是检查该特定行中的所有元素。你知道吗
我相信这是类似于懒惰的评价?但我想不出一个办法来完成这项任务。你知道吗
我的评估代码:
for p, g in reader:
phonemes = p.split()
graphemes = g.split()
if (len(phonemes) == len(graphemes) and
all(p in valid_pset for p in phonemes) and
all(g in valid_gset for g in graphemes)):
valid_row += 1
p_count += len(phonemes)
g_count += len(graphemes)
else:
invalid_row += 1
因此,使用此代码,它将在一行中计算每个元素,并且每次它满足要求时,我的valid_row
或invalid_row
将以1递增。你知道吗
我不打算这么做。。。 我想知道是否有一种方法,我可以简单地计算,增量,并转到下一行继续做同样的事情,直到文件结束?你知道吗
编辑:当检查它是否有效时,我需要该行中的所有元素满足正确的要求。有什么简洁的方法可以做到这一点(通过检查一行中的所有字符都是有效的,将有效计数器增加1)
编辑:我想当我碰到一个无效字符时,我可以增加计数器,从内部循环中断,到达下一行,然后重新进入循环?还是有更快的办法?你知道吗
编辑:
AA AE AH AO AW AY B CH D DH EH ER EY F G HH IH IY JH K L M N NG OW OY P R S SH T TH UH UW V W Y Z ZH
这是一个包含所有有效音素的文本文件
有效的graphemes是:(添加到有效的\u pset)
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', '_'})
例如,在检查示例文件时。无效行应为4 但我的代码不能做到这一点。你知道吗
编辑:似乎我找到了一种方法。但最后一件让我无法得到正确答案的事情是,如何检查文本文件中一行中的每个元素?更具体地说:
对于ee
,我想检查这个“word”中的“e”是否在有效的\u集中。意思是只要两个“e”都在集合中,那么ee
应该是有效的。有什么帮助吗?你知道吗
编辑我根据您对OP所做的更改修改了代码:
我运行了这个代码,它似乎工作。它给了我一行有效的解释:
我得到的结果是:
相关问题 更多 >
编程相关推荐