[英]How to remove all lines with caps AND digits AND special characters AND all the lines longer than 10 characters from a text file in python
我有一个包含荷兰语中所有现有单词的文本文件,我只需要具有特定数量字符的单词,没有任何数字或特殊字符或大写字母。 我尝试手动完成(可行),但大约有 40 万字 :) 所以我想使用 Python。 我对 Python 很陌生,找不到好的解决方案。 使用我的代码(远非最佳),我得到了结果,但还不够好。 有些单词似乎被中途拆分并连接起来,在某些行中,两个单词没有放在单独的行上(仅举几例我不想要的东西)。
我的问题:是否有一个简单的代码可以删除超过 10 个字符的单词,删除所有开头或包含 Cap 的单词,删除所有带有特殊字符的单词? 谢谢大家。
我的代码:
import re
input_file = open("basiswoorden-gekeurd.txt", "r+")
output_file = open("word_crumble_wordlist.txt", "w")
filetext = input_file.read()
res_caps = re.sub(r"\s*[A-Z]\w*\s*", " ", filetext).strip()
res_dig = re.sub(r"\s*\d\w*\s*", "", res_caps).strip()
res = re.sub(r"[^a-zA-Z0-9\n\.]\w*\s*", "", res_dig).strip()
for line in res:
if len(line) < 10:
output_file.write(line)
词表的原文部分:原文:见数字和特殊字符
结果部分:结果:看起来不错,但“aaaaagje”这个词似乎是其他词的组合:) 怎么样?
另外:原始,将“aanbevolencomité AND aanbevolen”作为两个单独的单词放在两个单独的行中并且:参见“aanbevolencomitaanbevolen”
在这种情况下,找到匹配的单词可能会更容易,而不是删除不需要的单词,请考虑以下示例让file.txt
内容为
Capital
okay
thisistoolong
okaytoo
d.o.t.s
然后
import re
with open("file.txt","r") as f:
text = f.read()
for i in re.findall(r'^[a-z]{1,10}$',text,re.MULTILINE):
print(i)
给出输出
okay
okaytoo
说明:我使用MULTLINE
行模式,所以^
和$
表示行首和行尾,然后我找到包含 1 到 10 个小写 ASCII 字母的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.