gpt4 book ai didi

python - 从文件中读取时一次跳过所有空间

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:44 25 4
gpt4 key购买 nike

我正在做一个项目(python 语言),它涉及使用 OCR(使用 tesseract-ocr)从图像中获取文本并将其存储到文件中。然后我必须逐个字符地读取文件并对检测到的字符执行一些功能。我遇到的问题是有时转换后创建的文件在文本文件的开头有很多空格(甚至是空行)。我不必为空格使用任何函数,所以我想一次忽略它们,这样可以节省我的时间。我在内存非常少的 raspberry-pi 上运行代码,需要一些时间来比较每个字符并一个一个地跳过。

camera.capture('test.png')

camera.resolution = (1920, 1080)
camera.brightness = 60

call(["tesseract","/home/pi/Desktop/fyp_try/test.png","/home/pi/Desktop/fyp_try/totext"])

f = open('/home/pi/Desktop/fyp_try/totext.txt','r')

message = f.read()
print(message)

for i in message:
print(i)
if(i>='a')and(i<='z'):
lst=a[i]
lstoperate()
elif(i>='A')and(i<='Z'):
lst=a['dot']
stoperate()
time.sleep(2)
smol=i.lower()
lst=a[smol]
lstoperate()
elif (i>='0')and(i<='9'):
lst=a['numsign']
lstoperate()
print(ord(i))
..............

对每个字符的操作之后是 2-3 秒的休眠时间。遇到空格时也会发生这种情况。有什么方法可以在读取文件时一次忽略所有空格,直到文件中非空格字符的开头。

最佳答案

如果您想以低资源成本在单个操作中去除所有空白,您需要避免split/join(可行,但有高临时内存成本)。

有两种明显的方法,惰性过滤方法:

 from itertools import filterfalse

...

for i in filterfalse(str.isspace, message):
...

它永远不会生成新的 str,而只是过滤掉您不关心的字符。

或者预先将它们全部剥离(初始内存消耗加倍,但随后下降到剥离版本所需的内存),使用 str.translate:

 from string import whitespace

dropspaces = str.maketrans('', '', whitespace)

...

message = f.read().translate(dropspaces)

这将删除所有 ASCII 空格,就像执行 .replace(' ', '').replace('\n', '').replace('\r', '').etc.. .,但在单次传递中,生成一个输出字符串,同时去除所有空格。

关于python - 从文件中读取时一次跳过所有空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55408693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com