我想挤压字符,为此我编写代码,但我的正则表达式没有用 python代码是:
file1 = open("C:/Python26/Normalized.txt");
normal = re.compile(r'(.)(\1+)')
f1=open("rzlt.txt",'w')
contents1=file1.read();
tokens1 = nltk.word_tokenize(contents1)
for t in tokens1:
t = re.sub(normal,r'\1',t)
f1.write(t+"\n")
f1.close()
我的文件就像
AA-0
A-aaaa-aaaaaaaaaaa
aaaaaaaa-aaaaaaaa
aaaaaaaaaaaaa-aaaaaa
AA-aaaaa-A
aaaaa-A-aaaa
AAA-0-aaaa-aaaaaaaa-aaaaaa
AAA-0
AAA-0-aaaaaaaa
AAA-0
aaaaaaaa
所需的输出
A-0
A-a-a
a-a
a-a
A-a-A
......
答案 0 :(得分:1)
import re
normal = re.compile(r'(.)(\1+)')
with open("Normalized.txt") as file1:
with open("rzlt.txt", 'w') as f1:
for line in file1:
f1.write(normal.sub(r'\1', line))
这会产生输出:
A-0
A-a-a
a-a
a-a
A-a-A
a-A-a
A-0-a-a-a
A-0
A-0-a
A-0
a
要打开文件,请使用with
语句。这可以确保文件随后关闭。
答案 1 :(得分:0)
没有必要为此目的使用正则表达式,消除重复的最常见方法是将集合转换为集合。但是,正如Shashank评论的那样,对于你正在处理的输入格式,即使没有必要:
for line in file:
newline = '-'.join(x[0] for x in line.split('-'))