【问题标题】:Extracting a nested list of matrix format from a string [duplicate]从字符串中提取矩阵格式的嵌套列表[重复]
【发布时间】:2017-01-22 05:03:44
【问题描述】:

"This is a matrix [[1,2,3],[4,5,6],[p,q,r]]. But these are not a matrix [[2,5,9],[5,2]] or [[5,8,[5,6]],[5]]."

我想从字符串中提取嵌套列表。我想要这样的输出 [['1','2','3'],['4','5','6'],['p','q','r']] 我不想要其他嵌套列表。

嵌套列表不是上面的特定列表,即 3x3。它可以是任何格式,例如 mxn。如何使用python从字符串中提取这种嵌套列表并使其成为非字符串以便我可以使用它?

【问题讨论】:

  • 您希望输出为二维列表还是字符串?
  • 二维列表@thiruvenkadam
  • 还有另一个查询。它是只有二维的还是可以是一维的或三维的?
  • 只有二维
  • 由于我无法添加答案,我将在这里给你逻辑。 (1) 使用此表达式以字符串形式获取 2D 列表:re.findall(r"[^[]*[([a-zA-Z0-9,][]*)]", my_string)。 (2) 在字符串前面加上 [ 并附加一个 ]。 (3) 使用 ast.literal_eval 将字符串列表转换为列表列表。 (4) 对于每个元素,检查所有内部列表是否具有相同的项目数和列表数是否等于项目数

标签: python python-3.x arraylist


【解决方案1】:

您需要找到构成您的字符串的规则。如果列表周围只有括号,那么这样做是安全的:

s = "This is a matrix [[1,2,3],[4,5,6],[7,8,9]]."
matrix_s = re.search('\[.*\]', s).group()
matrix = ast.literal_eval(matrix_s)

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多