Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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中的大文件和多个if语句问题_Python_Python 3.x_If Statement - Fatal编程技术网

Python中的大文件和多个if语句问题

Python中的大文件和多个if语句问题,python,python-3.x,if-statement,Python,Python 3.x,If Statement,在尝试读取和打印大文件时,使用多个“if/elif语句”会出现速度问题。当我对代码计时时,通读并替换2MB文件lol几乎需要10分钟。我使用的示例文件一行大约有8个字符。示例(阿巴巴、AAAA、巴巴巴) 打开(“text2.txt”、“r”)作为文件1: 对于文件1中的行: W=‘A’ Z='B' 计数1=行计数(W) 计数2=行计数(Z) 如果counting1==1: removeW=行。替换(W,'C') removeZ=行。替换(Z,'D') 打印(删除) 打印(删除) 如果counti

在尝试读取和打印大文件时,使用多个“if/elif语句”会出现速度问题。当我对代码计时时,通读并替换2MB文件lol几乎需要10分钟。我使用的示例文件一行大约有8个字符。示例(阿巴巴、AAAA、巴巴巴)

打开(“text2.txt”、“r”)作为文件1: 对于文件1中的行: W=‘A’ Z='B' 计数1=行计数(W) 计数2=行计数(Z) 如果counting1==1: removeW=行。替换(W,'C') removeZ=行。替换(Z,'D') 打印(删除) 打印(删除) 如果counting2==2: removeW=行。替换(W,'E') removeZ=行。替换(Z,'F') 打印(删除) 打印(删除) elif计数1==2: removeW=行。替换(W,'G') removeZ=行。替换(Z,'H') 如果计数2==3: removeW=行。替换(W,'E') removeZ=行。替换(Z,'F') 打印(删除) 打印(删除) elif计数1==3: removeW=行。替换(W,'I') removeZ=行。替换(Z,'J') 打印(删除) 打印(删除)
我有一台像样的电脑,因为我对编码非常陌生,有人能帮我清理一下,或者教我一个更好的程序来提高速度吗。我有两个嵌套的if语句,由于不同的可能性,不确定是否有更好的方法

这就是你的全部计划吗?您是将文件打印到屏幕上还是将输出重定向到另一个文件?我最终会将其写入另一个文本文件,但为了学习,我只是将其打印出来。是的,这就是整个计划的想法。每次根据8个字符替换一行大文件中的字符。打印一个包含8个字符行的两个meg文件可能需要一段时间,因此这可能会占用您大量的时间。有更好的方法来编写这段代码,但我不认为到目前为止你所做的是破坏性能。将脚本的输出重定向到屏幕以外的其他位置并计时。这应该会少花很多时间上帝。。。几乎是实例写入一个文件。这是一个很好的学习课程,所以我可以给你一个很好的答案来回答我的问题什么是更好的方式来做这样的事情?我认为这不是一个很好的网站,我认为,它有点太模糊和'代码审查'(其中有一个单独的网站!)。也不清楚你要解决的确切问题是什么。 with open("text2.txt","r") as File1: for line in File1: W = 'A' Z = 'B' counting1 = line.count(W) counting2 = line.count(Z) if counting1 == 1: removeW = line.replace(W,'C') removeZ = line.replace(Z,'D') print (removeW) print (removeZ) if counting2 == 2: removeW = line.replace(W,'E') removeZ = line.replace(Z,'F') print (removeW) print (removeZ) elif counting1 == 2: removeW = line.replace(W,'G') removeZ = line.replace(Z,'H') if counting2 == 3: removeW = line.replace(W,'E') removeZ = line.replace(Z,'F') print (removeW) print (removeZ) elif counting1 == 3: removeW = line.replace(W,'I') removeZ = line.replace(Z,'J') print (removeW) print (removeZ)