【问题标题】:Split string into array in Python在Python中将字符串拆分为数组
【发布时间】:2017-11-07 03:59:23
【问题描述】:

我有一个具有以下结构的字符串。

string = "[abcd, abc, a, b, abc]"

我想把它转换成一个数组。我一直在 Python 中使用 split 函数,但我在新数组的开头和结尾得到了空格和括号。我尝试使用一些 if 语句来解决它,但我总是在某些单词的末尾丢失字母。

请记住,我不知道字符串中元素的长度。可以是 1、2、3 等。

【问题讨论】:

  • 到目前为止你尝试过什么?请向我们展示您的代码。
  • “我尝试解决它”您尝试了什么以及遇到的具体问题是什么?

标签: python arrays string


【解决方案1】:

解决这个问题的另一种方法

string = "[abcd, abc, a, b, abc]"
result = string[1:len(string)-1].split(", ")
print(result)

希望对你有帮助

【讨论】:

    【解决方案2】:

    假设您的元素永远不会以空格或方括号结尾或开头,您可以将它们去掉(可以在拆分之前去掉括号):

    arr = [ x.strip() for x in string.strip('[]').split(',') ]
    

    它按预期给出

    print (arr)
    ['abcd', 'abc', 'a', 'b', 'abc']
    

    strip 的好处在于它不会影响所有内部字符。与:

    string = "[ab cd, a[b]c, a, b, abc]"
    

    你会得到:['ab cd', 'a[b]c', 'a', 'b', 'abc']

    【讨论】:

    • 对于较大的列表,首先删除括号然后拆分会更有效。
    • 如果你愿意.split(', ')(逗号+空格分开),.strip()可以避免
    【解决方案3】:

    我建议跟随。

    [list_element.strip() for list_element in string.strip("[]").split(",")]
    

    先去掉括号,再相应拆分。

    【讨论】:

      【解决方案4】:

      如果此列表中的值本身就是变量(看起来像,因为它们没有被引用),那么将此字符串转换为等效列表的最简单方法是

      string = eval(string)
      

      注意:如果列表中的值应该是字符串,这将不起作用。

      【讨论】:

        【解决方案5】:

        如果你不想使用strip,可以通过以下比较笨拙的方式来完成:

        arr = [e[1:] for e in string.split(',')]
        arr[len(arr)-1]=arr[len(arr)-1].replace(']', '')
        
        
        print(arr)
        ['abcd', 'abc', 'a', 'b', 'abc']
        

        【讨论】:

          【解决方案6】:

          你也可以这样做

          >>> s = string[1:len(string)-1].split(", ")
          >>> s
          ['abcd', 'abc', 'a', 'b', 'abc']
          

          【讨论】:

            【解决方案7】:

            首先从字符串中删除 [],然后用逗号分隔,然后从结果项中删除空格(使用 strip)。

            【讨论】:

            • 或者只是用逗号+空格分割。
            猜你喜欢
            • 2016-04-01
            • 2012-02-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-10
            相关资源
            最近更新 更多