【问题标题】:How to convert single string and multiple strings to a valid set() in python?如何在python中将单个字符串和多个字符串转换为有效的set()?
【发布时间】:2020-10-09 08:19:06
【问题描述】:

假设我从文件中读取了以下字符串:

s1 = "{'XXX-YYY'}"
s2 = "{'XXX-YYY', 'XXX-ZZZ', 'XXX-AAA', 'XXX-BBB'}"

我想将两个字符串都转换为有效集合。我试过这个:

s1 = {s1}
s2 = set((s2, ))

结果显然不是一个有效的 set():

{"{'XXX-YYY'}"}
{"{'XXX-YYY', 'XXX-ZZZ', 'XXX-AAA', 'XXX-BBB'}"}

应该是:

{'XXX-YYY'}
{'XXX-YYY', 'XXX-ZZZ', 'XXX-AAA', 'XXX-BBB'}

我怎样才能做到这一点?

【问题讨论】:

  • 你的第二套无效,它只会保留'XXX-YYY'一次。是你想要的吗?如果你想保留所有相似的项目,你必须创建一个列表
  • 对不起,我刚刚添加了一个错误的示例,现在应该可以了。我的问题显然是字符串处理。

标签: python python-3.x string type-conversion set


【解决方案1】:

试试这个:

s1=s1.replace('{', '').replace('}', '').replace("'", '')
s1=[k.strip() for k in s1.split(',')]
s1=set(s1)

s2=s2.replace('{', '').replace('}', '').replace("'", '')
s2=[k.strip() for k in s2.split(',')]
s2=set(s2)

print(s1)

{'XXX-YYY'}

print(s2)

{'XXX-YYY', 'XXX-AAA', 'XXX-BBB', 'XXX-ZZZ'}

【讨论】:

    【解决方案2】:

    这将创建一个集合:

    def string2set(string):
        unwanted = "{}'"
        for char in unwanted:
            string = string.replace(char, "")
        list = string.split(",")
        return set(list)
    
    s1 = "{'XXX-YYY'}"
    s2 = "{'XXX-YYY', 'XXX-YYY', 'XXX-YYY', 'XXX-YYY'}"
    
    s1_set = string2set(s1)
    s2_set = string2set(s2)
    

    s1_set = {'XXX-YYY'}

    s2_set = {'XXX-YYY'、'XXX-YYY'、'XXX-YYY'、'XXX-YYY'}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      相关资源
      最近更新 更多