Txt 文件 python 个唯一值
Txt file python unique values
所以我有一个包含许多行的 txt 文件,如下所示:
2107|Business|2117|Art|2137|Art|2145|English
本质上,这是一个随机的学生专业和一个编码的学期和年份,他们在此之前宣布了它。我想要做的是在最初宣布每个独特专业的学期中阅读。从上面的行我需要:
2107:Business
2117: Art
2145: English
我试图在 Python 中使用 Pandas 执行此操作,但实际上什么也做不了。
感谢任何帮助?
编辑:
应该澄清一下。我不希望代码在 Art 的第二个实例中读取。每个专业只有第一次申报和之前的学期。
假设 l
包含一行 "like this":
a = l.split('|')
for t in zip(a[0::2], a[1::2]):
print("{}: {}".format(*t))
您可以使用csv模块加载文件。例如:
import csv
with open('file.txt', 'rb') as f:
reader = csv.reader(f, delimiter='|')
for row in reader:
print row
现在您有一个包含文件中所有内容的列表 row
。 row[n]
对于 n 的所有偶数值是一个 year/semester 并且对于 n 的所有奇数值是一个主要的。
使用 Python 的 CSV 库帮助将每一行拆分为单元格列表。然后,您可以使用 Python 的 grouper()
配方,该配方用于一次从列表中取出 n
项:
import csv
import itertools
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return itertools.izip_longest(fillvalue=fillvalue, *args)
seen = set()
with open('input3.txt', 'rb') as f_input:
for row in csv.reader(f_input, delimiter='|'):
for k, v in grouper(row, 2):
if v not in seen:
print "{}: {}".format(k, v)
seen.add(v)
因此对于您的示例文件行,这将为您提供:
2107: Business
2117: Art
2145: English
所以我有一个包含许多行的 txt 文件,如下所示:
2107|Business|2117|Art|2137|Art|2145|English
本质上,这是一个随机的学生专业和一个编码的学期和年份,他们在此之前宣布了它。我想要做的是在最初宣布每个独特专业的学期中阅读。从上面的行我需要:
2107:Business
2117: Art
2145: English
我试图在 Python 中使用 Pandas 执行此操作,但实际上什么也做不了。 感谢任何帮助?
编辑: 应该澄清一下。我不希望代码在 Art 的第二个实例中读取。每个专业只有第一次申报和之前的学期。
假设 l
包含一行 "like this":
a = l.split('|')
for t in zip(a[0::2], a[1::2]):
print("{}: {}".format(*t))
您可以使用csv模块加载文件。例如:
import csv
with open('file.txt', 'rb') as f:
reader = csv.reader(f, delimiter='|')
for row in reader:
print row
现在您有一个包含文件中所有内容的列表 row
。 row[n]
对于 n 的所有偶数值是一个 year/semester 并且对于 n 的所有奇数值是一个主要的。
使用 Python 的 CSV 库帮助将每一行拆分为单元格列表。然后,您可以使用 Python 的 grouper()
配方,该配方用于一次从列表中取出 n
项:
import csv
import itertools
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return itertools.izip_longest(fillvalue=fillvalue, *args)
seen = set()
with open('input3.txt', 'rb') as f_input:
for row in csv.reader(f_input, delimiter='|'):
for k, v in grouper(row, 2):
if v not in seen:
print "{}: {}".format(k, v)
seen.add(v)
因此对于您的示例文件行,这将为您提供:
2107: Business
2117: Art
2145: English