Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环两个文件中的项_Python - Fatal编程技术网

Python 循环两个文件中的项

Python 循环两个文件中的项,python,Python,我有以下格式的成对术语: good, bad > man, woman 我需要的是PIAR中左右术语之间的迭代,如下所示: [('good', 'man'), ('good', 'woman'), ('bad', 'man'), ('bad', 'woman')] 对于每一对新的,我必须在一个按行分割的文本文件中计算它的统计数据 统计数字: 1) 第一项和第二项(“good”和“man”)在文本文件中以唯一行组合在一起时的频率 2) 第一项或第二项的频率(“good”或“man”),当

我有以下格式的成对术语:

good, bad > man, woman
我需要的是PIAR中左右术语之间的迭代,如下所示:

[('good', 'man'), ('good', 'woman'), ('bad', 'man'), ('bad', 'woman')]
对于每一对新的,我必须在一个按行分割的文本文件中计算它的统计数据

统计数字:

1) 第一项和第二项
(“good”和“man”)
在文本文件中以唯一行组合在一起时的频率

2) 第一项或第二项的频率
(“good”或“man”)
,当一项单独出现,而另一项未出现在文本文件的一行中时

我这里的问题是产生虚假统计数据的循环


有人能帮忙做个好循环吗?谢谢

您的循环计数不正确,因为您正在初始化循环之外的
a
b
c
变量,然后重复使用它们。只要在每个
i,j
对的开始处重新初始化,您就不会遇到问题:

for i in left:
        for j in right:
                a = b = c = 0                               # reinitialize!

                for line in text_file.splitlines():
                        if i in line and j in line:
                                a += 1
                        elif i in line and j not in line:
                                b+= 1
                        elif j in line and i not in line:
                                c+= 1

                bigram.append((i,j,a, b, c))

bigram=[]必须在每个i,j开始时重新初始化?也许,我不知道您希望如何聚合数据。如果您想要整个数据集的一个统计列表,将其保留在顶部循环之外就可以了。如果希望对
pairs\u文件的每一行进行单独的统计,则需要将其上移到
i
循环的正上方。如果你想对
text\u文件中的每一行进行单独的bigram计数
,那么你应该把
bigram
初始化放在我添加的
a=b=c=0
行旁边,尽管这种情况没有多大意义,因为
bigram
只会得到一个值。这是你第四次在两行上得到同样的值。