实现 对比列表内容 的求助
我有A.txt和B.txt,每个txt包含了一百多个近义词集合,一行一个集合,部分示例如下:A.txt
{1,2,3,4}
{5,6}
{7,8,9}
B.txt
{6,5}
{9,8}
具体问题:两个文件包含了一些同样的数据,我想去除它:例如,上个数据中{5,6}、{6,5}同样,就留下一个;
{7,8,9}、{9,8}这两个就留下{7,8,9}因为内容多。
结果生成C.txt,内容如下:
{1,2,3,4}
{5,6}
{7,8,9}
需要您的帮助,期待回复,谢谢哒.... with open("A.txt", "r", encoding="utf-8") as f:
setsA = f.readlines()
with open("B.txt", "r", encoding="utf-8") as g:
setsB = g.readlines()
all_sets =
new_sets = []
while all_sets:
s = all_sets.pop()
if any(s.issubset(x) for x in all_sets):
continue
elif any(s.issubset(y) for y in new_sets):
continue
else:
new_sets.append(s)
with open("C.txt", "w", encoding="utf-8") as h:
h.write("\n".join(map(str, new_sets)))
print("OK!")
qq1151985918 发表于 2021-12-2 16:22
我的数据是词,目前报错了,有点看不懂:
line 7, in <listcomp>
all_sets =
File "<string>", line 1 Amgalang 发表于 2021-12-2 19:42
我的数据是词,目前报错了,有点看不懂:
line 7, in
all_sets =
把你数据发一下 qq1151985918 发表于 2021-12-2 19:47
把你数据发一下
因为是小语种所以发出去会出现 乱码:
您先以英语字母尝试吧,谢谢
A.txt
A,B,C,D
E,F
G,H,I
B.txt
F,E
H,I
我的原始数据(我发出去试一试):
A.txt
ᠭᠤᠯᠳᠤ ᠰᠠᠮᠠᠳᠠᠰᠤ ᠂ ᠭᠤᠯᠳᠤ ᠰᠢᠷᠬᠡᠭ
ᠬᠤᠰᠬᠢᠨᠠᠬ ᠤᠷᠪᠠᠭ᠋ᠤ ᠂ ᠴᠠᠭᠠᠨ ᠮᠢᠬᠠ
ᠬᠦᠬᠡᠬᠡ ᠰᠠᠷᠠ ᠂ ᠯᠠ ᠰᠠᠷᠠ
B.txt
ᠬᠦᠬᠡᠬᠡ ᠰᠠᠷᠠ ᠂ ᠯᠠ ᠰᠠᠷᠠ᠂ ᠯᠠ
ᠭᠤᠯᠳᠤ ᠰᠢᠷᠬᠡᠭ ᠂ ᠭᠤᠯᠳᠤ ᠰᠠᠮᠠᠳᠠᠰᠤ
Amgalang 发表于 2021-12-2 19:51
因为是小语种所以发出去会出现 乱码:
您先以英语字母尝试吧,谢谢
A.txt
这是乱码吗?截个图 qq1151985918 发表于 2021-12-2 19:52
这是乱码吗?截个图
原来是你 Amgalang 发表于 2021-12-2 19:55
在英语上实现的这里也没事,图片是我的数据,一个逗号隔开一个词 qq1151985918 发表于 2021-12-2 19:57
原来是你
哈哈哈,我也一回想 发现是你了 我发了个帖子,不然一直麻烦您 本帖最后由 qq1151985918 于 2021-12-2 20:41 编辑
Amgalang 发表于 2021-12-2 19:51
因为是小语种所以发出去会出现 乱码:
您先以英语字母尝试吧,谢谢
A.txt
fun = lambda x: str({i.strip() for i in x.split(",")})
with open("A.txt", "r", encoding="utf-8") as f:
setsA = list(map(fun, f.readlines()))
with open("B.txt", "r", encoding="utf-8") as g:
setsB = list(map(fun, g.readlines()))
all_sets =
new_sets = []
while all_sets:
s = all_sets.pop()
if any(s.issubset(x) for x in all_sets):
continue
elif any(s.issubset(y) for y in new_sets):
continue
else:
new_sets.append(s)
with open("C.txt", "w", encoding="utf-8") as h:
h.write("\n".join(map(str, new_sets)))
print("OK!")
页:
[1]