我有一个单词标记列表,例如:
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']"]
我可以通过哪些方法来改善预期结果?
答案 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']]