列出列表中的元素而不是字符串?

时间:2017-11-06 11:35:23

标签: python

我有一个单词标记列表,例如:

my_list = [[('abc, 123'), ('def, 456')], [('ghi, 789'), ('abc, 456')]]  

我希望使用正则表达式进行一些预处理,例如将“,”替换为空白(例如string = re.sub(r“(,) “,”,“,字符串)。之后,我想再次将字符串附加到另一个列表。总而言之,我希望得到一个预处理列表,看起来像这样:

my_list_preprocessed = [[('abc 123'), ('def 456')], [('ghi 789'), ('abc 456')]]

目前我试图像这样实现它:

my_list_preprocessed = []
for string in my_list:
  string = re.sub(r"(, )", " ", str(string))
  my_list_preprocessed.append(string)

但是,而不是获得预期的结果。我收到了一个字符串列表:

my_list = ["['abc 123', 'def 456']", "['ghi 789', 'abc 456']"]

我可以通过哪些方法来改善预期结果?

3 个答案:

答案 0 :(得分:0)

如果我找到你,你想删除将字母与数字分开的逗号。你要注意的一件事是你的括号是多余的,因为你所拥有的是一个字符串而不是一个元组。以下是一些建议的更正,我认为这些更正将帮助您实现您想要的目标。

my_list = [[('abc, 123'), ('def, 456')], [('ghi, 789'), ('abc, 456')]]

my_list_preprocessed = []
for item in my_list:
    item_preprocessed = []
    for inner_item in item:
        inner_item = inner_item.replace(",", "")
        item_preprocessed.append(inner_item)
    my_list_preprocessed.append(item_preprocessed)
print(my_list_preprocessed)

答案 1 :(得分:0)

您可以使用列表理解来获得您想要的内容:

my_list = [[('abc, 123'), ('def, 456')], [('ghi, 789'), ('abc, 456')]]

my_list_preprocessed = [[x[0].replace(',', ''), x[1].replace(',','')] for x in my_list]

但请注意,此操作的输出为:

[['abc 123', 'def 456'], ['ghi 789', 'abc 456']]

而不是

[[('abc 123'), ('def 456')], [('ghi 789'), ('abc 456')]]

那是因为元组不能包含一个项目。如果你真的想要元组,你应该使用这个代码:

my_list_preprocessed = [[(x[0].replace(',', ''),), (x[1].replace(',',''),)] for x in my_list]

注意添加的逗号。这些用于创建仅包含一个项目的元组。

答案 2 :(得分:0)

输入:

my_list = [[('abc, 123'), ('def, 456')], [('ghi, 789'), ('abc, 456')]]  

<强>代码:

import re
my_list_preprocessed = map(lambda x:map(lambda y:re.sub(r',',' ',y),x),my_list)

<强>输出:

[['abc  123', 'def  456'], ['ghi  789', 'abc  456']]