【问题标题】:Python stripping characters and combine list objectsPython剥离字符并组合列表对象
【发布时间】:2021-03-09 02:09:24
【问题描述】:

我有一个与此类似的大量列表:

['red.color\xa0', '2020-11-27\xa0', 'green.color\xa0', '2020-11-27\xa0', 'blue.color\xa0', '2020-11-27\xa0']
 

我正在尝试弄清楚如何去除 \xa0 字符以及组合每两个列表项,所以它最终会像:

[['red.color', '2020-11-27'], ['green.color', '2020-11-27'], ['blue.color', '2020-11-27']]

我试过了,但失败得很惨:

for data in ugly:
    data = data.strip("\xa0")

至于将所有其他列表项合并到一个新列表中,好吧,如果我在上面失败了,你可能会猜到我在这方面内爆。

【问题讨论】:

  • 分配给循环变量不会修改您循环的内容。
  • 试试ugly = [data.strip("\xa0") for data in ugly]?
  • @user2357112supportsMonica:我想知道,但我也试图在那里组合一些东西,所以也许这就是我循环播放它的原因。我想解开它,但不幸的是,东西在 atm 里面。

标签: python python-3.x list append strip


【解决方案1】:

\xa0 实际上是不间断的空间。使用List Comprehension如下替换它:

In [3731]: ugly = ['red.color\xa0', '2020-11-27\xa0', 'green.color\xa0', '2020-11-27\xa0', 'blue.color\xa0', '2020-11-27\xa0']
In [3736]: x = [i.replace(u'\xa0', u'') for i in ugly]

现在,使用 zip 组合列表的每 2 个元素:

In [3741]: y = [list(i) for i in zip(x[0::2], x[1::2])]
In [3742]: y
Out[3742]: 
[['red.color', '2020-11-27'],
 ['green.color', '2020-11-27'],
 ['blue.color', '2020-11-27']]

【讨论】:

    【解决方案2】:

    要删除 '\xa0' 部分,您可以使用 string.replace('\xa0',"") 方法。 然后,您必须以 2 的步长范围迭代列表,并将当前元素与下一个元素配对。 您的代码可能看起来像这样:

    list1 = ['red.color\xa0', '2020-11-27\xa0', 'green.color\xa0', '2020-11-27\xa0', 'blue.color\xa0', '2020-11-27\xa0']
    list2 = [x.replace("\xa0", "") for x in list1]
    
    new_list = list()
    
    for x in range(0, len(list2), 2):
        new_list.append([list2[x], list2[x+1]])
    
    print(new_list)
    

    【讨论】:

    • 在您的答案和我选择接受的答案之间做出了艰难的决定,很好的解决方案,感谢您的帮助!
    【解决方案3】:

    您的方法是正确的,但是当您使用列表中的项目时,项目只是一个临时变量,它不会对原始列表产生任何影响。你应该使用这样的索引。

    l = ['red.color\xa0', '2020-11-27\xa0', 'green.color\xa0', '2020-11-27\xa0', 'blue.color\xa0', '2020-11-27\xa0']
    
    for i in range(len(l)):
        l[i] = l[i].strip("\xa0")
    l2 = []
    for i in range(0,len(l),2):
        l2.append([l[i], l[i+1]])
    
    print(l2) #[['red.color', '2020-11-27'], ['green.color', '2020-11-27'], ['blue.color', '2020-11-27']]
    

    【讨论】:

    • 感谢您的帮助,该解决方案有效,尽管我决定采用其他答案,因为它很简单。
    【解决方案4】:

    我认为您正在寻找这样的东西:

    
    values = ['red.color\xa0', '2020-11-27\xa0', 'green.color\xa0', '2020-11-27\xa0', 'blue.color\xa0', '2020-11-27\xa0']
    
    index = 0
    result = []
    while index < len(values):
        result.append([values[index].strip("\xa0"), values[index + 1].strip("\xa0")])
        index += 2
    
    print(result) # prints [['red.color', '2020-11-27'], ['green.color', '2020-11-27'], ['blue.color', '2020-11-27']]
    

    基本上步骤是:

    1. 创建一个名为 index 的变量,即对中第一项的索引
    2. 创建一个名为 result 的变量,作为结果列表
    3. 进入循环遍历索引并附加每一对并剥离它们
    4. 将索引变量增加 2,因为您在结果列表中添加了 2 个变量

    【讨论】:

    • 感谢您的帮助,该解决方案有效,尽管我决定采用其他答案,因为它很简单。
    猜你喜欢
    • 2011-12-03
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多