从 csv 文件中的多行中提取唯一值
Extracting unique values from multiple rows in csv file
我有房地产数据 csv 文件。行中有很多重复的信息,如下例所示:
Row1:
Su baldais, Skalbimo mašina, **Viryklė**, **Indaplovė**, Vonia
Row2
Virtuvės komplektas, **Viryklė**, **Indaplovė**, Dušo kabina, Rekuperacinė sistema
如你所见,有很多数据,这是重复的(我用星号标记了它)。有没有办法从 python 的所有行中只获取唯一值?
还不完全清楚你想要什么,所以我将包括两个场景:
您在 cwd 中的 example.csv
数据:
Su baldais,Skalbimo mašina,Viryklė,Indaplovė,Vonia
Virtuvės komplektas,Viryklė,Indaplovė,Dušo kabina,Rekuperacinė sistema
场景一
You want every value that appears in the csv, but do not want any
value more than once. A perfect use case for a set, which will only
store each value once.
#!/usr/bin/env python3
import csv
unique_values = set()
with open("example.csv") as handle:
reader = csv.reader(handle)
for row in reader:
unique_values.update(row)
print(", ".join(unique_values))
结果:
Skalbimo mašina, Dušo kabina, Rekuperacinė sistema, Su baldais, Indaplovė, Virtuvės komplektas, Viryklė, Vonia
场景二
You want only the unique values from the csv, discarding any values
that appear more than once.
#!/usr/bin/env python3
import csv
all_values = set()
to_delete = set()
with open("example.csv") as handle:
reader = csv.reader(handle)
for row in reader:
for value in row:
if value in all_values:
to_delete.add(value)
else:
all_values.add(value)
print(", ".join(all_values - to_delete))
这里我使用两组,第二组称为 to_delete
,其中包含我们不止一次看到的任何值。我 运行 all_values - to_delete
只给我一组完全独特的值。
结果:
Dušo kabina, Su baldais, Virtuvės komplektas, Skalbimo mašina, Vonia, Rekuperacinė sistema
我有房地产数据 csv 文件。行中有很多重复的信息,如下例所示:
Row1:
Su baldais, Skalbimo mašina, **Viryklė**, **Indaplovė**, Vonia
Row2
Virtuvės komplektas, **Viryklė**, **Indaplovė**, Dušo kabina, Rekuperacinė sistema
如你所见,有很多数据,这是重复的(我用星号标记了它)。有没有办法从 python 的所有行中只获取唯一值?
还不完全清楚你想要什么,所以我将包括两个场景:
您在 cwd 中的 example.csv
数据:
Su baldais,Skalbimo mašina,Viryklė,Indaplovė,Vonia
Virtuvės komplektas,Viryklė,Indaplovė,Dušo kabina,Rekuperacinė sistema
场景一
You want every value that appears in the csv, but do not want any value more than once. A perfect use case for a set, which will only store each value once.
#!/usr/bin/env python3
import csv
unique_values = set()
with open("example.csv") as handle:
reader = csv.reader(handle)
for row in reader:
unique_values.update(row)
print(", ".join(unique_values))
结果:
Skalbimo mašina, Dušo kabina, Rekuperacinė sistema, Su baldais, Indaplovė, Virtuvės komplektas, Viryklė, Vonia
场景二
You want only the unique values from the csv, discarding any values that appear more than once.
#!/usr/bin/env python3
import csv
all_values = set()
to_delete = set()
with open("example.csv") as handle:
reader = csv.reader(handle)
for row in reader:
for value in row:
if value in all_values:
to_delete.add(value)
else:
all_values.add(value)
print(", ".join(all_values - to_delete))
这里我使用两组,第二组称为 to_delete
,其中包含我们不止一次看到的任何值。我 运行 all_values - to_delete
只给我一组完全独特的值。
结果:
Dušo kabina, Su baldais, Virtuvės komplektas, Skalbimo mašina, Vonia, Rekuperacinė sistema