提问人:MJP 提问时间:9/6/2023 最后编辑:DharmanMJP 更新时间:9/7/2023 访问量:126
从正则表达式输出创建列表列表
Creating a list of lists from a RegEx output
问:
我正在尝试将带有换行符的字符串转换为列表列表,每个列表都从换行符开始,并将列表中的每个单词转换为它自己的单个字符串。
我想把这个:
string = 'milk,eggs,peanut butter,oatmeal\nbutter,pancake mix,maple syrup\ndog treats,milk,milk'
进入这个:
list_of_lists = [['milk','eggs','peanut butter','oatmeal'],
['butter','pancake mix','maple syrup'],
['dog treats','milk','milk']]
我采取的方法是使用 RegEx 来获得以下输出:
import re
list1 = re.findall(r'[ \n\t\w]+', string)
['milk',
'eggs',
'peanut butter',
'oatmeal\nbutter',
'pancake mix',
'maple syrup\ndog treats',
'milk',
'milk']
但我不确定之后到底需要什么语法。任何帮助将不胜感激 - 谢谢。
答:
6赞
C.Nivs
9/6/2023
#1
我认为你根本不需要正则表达式:
string = 'milk,eggs,peanut butter,oatmeal\nbutter,pancake mix,maple syrup\ndog treats,milk,milk'
result = [val.split(',') for val in string.split('\n')]
这给了
[['milk', 'eggs', 'peanut butter', 'oatmeal'], ['butter', 'pancake mix', 'maple syrup'], ['dog treats', 'milk', 'milk']]
评论
0赞
MSH
9/6/2023
我会在这个例子中使用你的代码。这很清楚,很好。但是,这仍然不是答案。也许OP简化了这个问题。
0赞
C.Nivs
9/6/2023
@MSH是什么给你留下了这样的印象?
3赞
Steven Rumbalski
9/6/2023
@MSH 它给出了请求的确切输出。怎么不是答案?
2赞
JRiggles
9/6/2023
@MSH OP表示,他们尝试使用正则表达式,但没有得到预期的结果。他们从来没有说过使用正则表达式需要答案。
2赞
MJP
9/6/2023
感谢您的回复。我不需要使用正则表达式,但我一直在尝试在我的代码中加入更多的正则表达式,只是为了更熟悉它,但似乎它在这里弊大于利。
2赞
Andrej Kesely
9/6/2023
#2
这是使用 的版本,但对于这个简单的示例,请使用 @C.Nivs 答案:re
import re
s = "milk,eggs,peanut butter,oatmeal\nbutter,pancake mix,maple syrup\ndog treats,milk,milk"
print([re.findall(r"[^,]+", group) for group in re.findall(r"[^\n]+", s)])
指纹:
[
["milk", "eggs", "peanut butter", "oatmeal"],
["butter", "pancake mix", "maple syrup"],
["dog treats", "milk", "milk"],
]
评论
1赞
MJP
9/6/2023
感谢您的回复。我一直在尝试在我的代码中加入更多的正则表达式,只是为了更熟悉它,但似乎它在这里弊大于利。
0赞
C.Nivs
9/14/2023
@MJP,如果你把它作为一种练习,那完全没问题。在这种情况下,我会接受这个答案,它更符合您想要实现的目标
评论
list(map(lambda row: row.split(','), string.split('\n')))
map
lambda