提问人:dyslexic_donkey 提问时间:1/17/2023 最后编辑:deppermdyslexic_donkey 更新时间:1/21/2023 访问量:46
在 Python 中将引号插入 2D 列表的字符串表示形式
Inserting quotes into the string representation of a 2D list in Python
问:
我有从文本框中获取用户输入的代码,需要将其转换为字符串的二维列表。用户输入是 Jupyter Dash 文本输入
我正在尝试以这样一种方式设计它,即用户不需要自己引用元素,并且可以输入逗号分隔的单词
如果用户自己引用该元素,我会让它工作,但认为如果他们不必引用它会更干净
我可以用很多东西来做到这一点,但它显然非常凌乱,很容易破裂str.split()
str.replace()
如果 Dash 有办法完全规避这个问题,我会非常感兴趣,但我找不到
当前功能
输入(外部引号不是由用户编写的,而是隐含的):
'["apple", "orange", "pear"], ["cabbage", "lettuce"]'
输出:
[["apple", "orange", "pear"], ["cabbage", "lettuce"]]
所需功能
输入(外部引号不是由用户编写的,而是隐含的):
'[apple, orange, pear], [cabbage, lettuce]'
输出:
[["apple", "orange", "pear"], ["cabbage", "lettuce"]]
我目前的解决方案如下:
user_input = f"[{user_input}]"`
我真的很想避免使用 但这是我找到的唯一解决方案,而不是过度的字符串操作literal_eval()
output_list = list(ast.literal_eval(user_input))
答:
0赞
sophros
1/21/2023
#1
您可以使用以下方法使用正则表达式模块 re
:
import re
input_str = '["apple", "orange", "pear"], ["cabbage", "lettuce"]'
lst2nd_level = []
for inner_list in re.findall('\[([\"a-z, ]+)\]', input_str):
lst = list(re.findall('\"([a-z]+)\"', inner_list))
lst2nd_level.append(lst)
print(lst2nd_level)
其中第一个正则表达式匹配字符串列表,第二个正则表达式匹配内部列表中的单词。
评论
[]