【发布时间】:2014-11-21 13:33:04
【问题描述】:
我有一个文本文件,其中包含大小约为 2GB 的 Unicode 文本。我尝试使用以下代码删除所有符号
import re
symbols = re.compile(r'[{} &+( )" =!.?.:.. / | » © : >< # « ,] 1 2 3 4 5 6 7 8 9 _ - + ; [ ] %',flags=re.UNICODE)
with open('/home/corpus/All12.txt','a') as t:
with open('/home/corpus/All11.txt', 'r') as n:
data = n.readline()
data = symbols.sub(" ", data)
t.write(data)
一个用于测试代码的小文件:
:621
"
:621 "
:621 :1 ;"
_ " :594 :25 4 8 0 :23 "സര്ക്കാര്ജീവനക്കാരുടെ ശമ്പളം അറിയാന് ഭാര്യമാര്ക്ക് അവകാശമുണ്ട്വിവരാവകാശകമ്മീഷന്
:621 :4 0 3 0 ;"
_ " :551 :16 :3 "
:12 :70 ;" " " ="" " " ="" " " ="" +
_ " :541 :26 :30 45 5 35 "
=' 'ന്യൂഡല്ഹി: സര്ക്കാര്ജീവനക്കാരായ ഭര്ത്താക്കന്മാരുടെ ശമ്പളം
愿望输出是ന്യൂഡല്ഹി സര്ക്കാര്ജീവനക്കാരായ ഭര്ത്താക്കന്മാരുടെ ശമ്പളം。
代码不起作用。它停止了我的电脑。
我可以不用正则表达式来解决这个问题吗?
【问题讨论】:
-
您确定代码不起作用吗?也许只是需要很长时间,这可能是因为您正在阅读一个 2GB 的文本文件。尝试在循环中添加
print。 -
@DanielGibbs 我敢肯定。跑了一段时间后就安静了。这里没有循环
-
我建议你制作一个小样本文件来测试,否则你会发现很难隔离问题。考虑将脚本拆分为三个函数(读入数据、处理数据、写出数据),以便您可以单独测试每个函数。
-
您的 2 GiB 文件中有多少行?如果只有几个(或一个......),一次迭代一行对您没有多大帮助。
标签: python regex python-3.x unicode