Python 存储多行中的唯一子字符串

Python 存储多行中的唯一子字符串,python,python-3.x,Python,Python 3.x,我有一个像这样的文件 a/b/X/Y/1 a/b/X/Y/2 a/b/X/Y/3 ... a/b/X/Z/1 a/b/X/Z/2 a/b/X/Z/3 ... a/c/M/N/1 a/c/M/N/2 a/c/M/N/3 ... a/d/F/G/123 a/d/F/G/124 a/d/F/G/125 符号是占位符 我感兴趣的是由第一个和第二个符号组成的唯一子字符串,它们之间用“/”分隔。换句话说,在这个示例中,我想构建一个由[“a/b”、“a/c”、“a/d”]组成的列表 如何在Python中惯用

我有一个像这样的文件

a/b/X/Y/1
a/b/X/Y/2
a/b/X/Y/3
...
a/b/X/Z/1
a/b/X/Z/2
a/b/X/Z/3
...
a/c/M/N/1
a/c/M/N/2
a/c/M/N/3
...
a/d/F/G/123
a/d/F/G/124
a/d/F/G/125
符号是占位符

我感兴趣的是由第一个和第二个符号组成的唯一子字符串,它们之间用
“/”
分隔。换句话说,在这个示例中,我想构建一个由
[“a/b”、“a/c”、“a/d”]
组成的列表


如何在Python中惯用地做到这一点?

我将根据
/
以2的maxsplit分割行,丢弃最后一项(您不需要的字符串的其余部分),重新连接字符串,然后将其放入集合中以删除重复项:

with open("file.txt") as lines:
    result = {"/".join(s.split("/",maxsplit=2)[:-1]) for s in lines}
结果:

>>> result
{'a/b', 'a/c', 'a/d'}

我做了一个没有太多魔力的例子。 我们首先写入文件,但您可以删除它(这只是为了方便地向您展示它是如何工作的)

这使得:

['a/b', 'a/d', 'a/c']
对于包含以下内容的文件:

a/b/X/Y/1
a/b/X/Y/2
a/b/X/Y/3
a/b/X/Z/1
a/b/X/Z/2
a/b/X/Z/3
a/c/M/N/1
a/c/M/N/2
a/c/M/N/3
a/d/F/G/123
a/d/F/G/124
a/d/F/G/125

对于您的示例,您可以只使用
lines=file\u content.splitlines()
line.strip()[0:3]
假设标识符只能有1个字符长(并且不需要使用该切片进行剥离)
['a/b', 'a/d', 'a/c']
a/b/X/Y/1
a/b/X/Y/2
a/b/X/Y/3
a/b/X/Z/1
a/b/X/Z/2
a/b/X/Z/3
a/c/M/N/1
a/c/M/N/2
a/c/M/N/3
a/d/F/G/123
a/d/F/G/124
a/d/F/G/125