Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将具有逗号分隔值的记录转换为集合_Python_Python 3.x - Fatal编程技术网

Python 将具有逗号分隔值的记录转换为集合

Python 将具有逗号分隔值的记录转换为集合,python,python-3.x,Python,Python 3.x,我有一个包含多个记录的字符串。每个记录都有一个由逗号分隔的不同单词列表。我想将每个记录转换成一个集合,其中记录中的单词就是集合中的值。你能告诉我如何把它转换成一套吗 {'citrus fruit','semi-finished bread','margarine','ready soups'} {'tropical fruit','yogurt','coffee'} 下面是一个文件中的两条记录 citrus fruit,semi-finished bread,margarine,ready s

我有一个包含多个记录的字符串。每个记录都有一个由逗号分隔的不同单词列表。我想将每个记录转换成一个集合,其中记录中的单词就是集合中的值。你能告诉我如何把它转换成一套吗

{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
下面是一个文件中的两条记录

citrus fruit,semi-finished bread,margarine,ready soups
tropical fruit,yogurt,coffee
{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
我想将其转换为:

{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
使用csv模块

{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
import csv

def readsets(filename):
    with open(filename) as f:
        for row in csv.reader(f):
            yield set(row)

我不相信你想要一个
集合
,因为在你的例子中,你是按你想要的结果顺序列出所有东西的<代码>集合s是无序的,不能包含重复项。也不清楚您的记录是如何分隔的

{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
下面是一个使用
list
维护订单的示例:

{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
>>> first_record = "citrus fruit,semi-finished bread,margarine,ready soups"
>>> second_record = "tropical fruit,yogurt,coffee"
>>> def tokenize(s, delim=","):
...   return s.split(delim)
... 
>>> first_result = tokenize(first_record)
>>> first_result
['citrus fruit', 'semi-finished bread', 'margarine', 'ready soups']
>>> second_result = tokenize(second_record)
>>> second_result
['tropical fruit', 'yogurt', 'coffee']
如果您真的想要一个
集合
,只需将其包装在对
集合
构造函数的调用中:

{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
>>> first_result_set = set(first_result)
>>> second_result_set = set(second_result)
>>> first_result_set
{'margarine', 'ready soups', 'semi-finished bread', 'citrus fruit'}
>>> second_result_set
{'coffee', 'yogurt', 'tropical fruit'}
编辑:您可以在一个shebang中完成所有操作,因为我们知道记录由换行符分隔:

{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
>>> records = "citrus fruit,semi-finished bread,margarine,ready soups\ntropical fruit,yogurt,coffee"
>>> def setitize_records(records, record_delim="\n", item_delim=","):
...   record_list = records.split(record_delim)
...   record_sets = [set(record.split(",")) for record in record_list]
...   return record_sets
... 
>>> result = setitize_records(records)
>>> result
[{'margarine', 'ready soups', 'semi-finished bread', 'citrus fruit'}, {'coffee', 'yogurt', 'tropical fruit'}]

这应该对你有用。看看吧

{'citrus fruit','semi-finished bread','margarine','ready soups'}
{'tropical fruit','yogurt','coffee'}
rec = "citrus fruit,semi-finished bread,margarine,ready soups tropical
fruit,yogurt,coffee"
#result 
myset = set() 

while rec != "":
    head, _ , rec = rec.partition(',')
    myset.add(head)
print(myset)

你真的想要一个
集合
还是
列表
set
是一个无序的集合,没有重复项。
列表
是有序的,可能包含重复项。记录如何分隔?记录由新行字符分隔。需要一个set@aseempuri令人惊叹的!如果你觉得这个片段很有用,你也介意投票吗?