将带有硬编码换行符的字符串转换为python中的矩阵

Posted

技术标签:

【中文标题】将带有硬编码换行符的字符串转换为python中的矩阵【英文标题】:Convert string with hard coded line breaks into matrix in python 【发布时间】:2021-01-06 06:19:13 【问题描述】:

我正在尝试创建一个类,该类采用带有硬编码换行符的数字字符串并输出矩阵和有关该矩阵的详细信息。在第一种情况下,我只想能够创建矩阵,但我很挣扎。我知道我可以用 numpy 或类似的东西很容易地做到这一点,但要尝试练习。

class Matrix:
def __init__(self, matrix_string):
    self.convert_to_list = [int(s) for s in str.split(matrix_string) if s.isdigit()]
    self.split = matrix_string.splitlines()

我想我想将我已经完成的两件事结合起来,但我不知道如何将我的 convert_to_list 方法应用于拆分方法中的每个元素。

变得非常困惑。

样本输入/输出

Input = " 1 8 7 /n 6 18 2 /n 1 9 7 "

Desired Output = [[1, 8, 7], [6, 18, 2], [1, 9, 7]]

【问题讨论】:

【参考方案1】:

其实没那么难:

s = " 1 8 7 /n 6 18 2 /n 1 9 7 "
print([i.split() for i in s.split('/n')])

更简单但更长的方法:

s = s.split('/n')
new = []
for i in s:
    new.append(i.split())
print(new)

输出:

[['1', '8', '7'], ['6', '18', '2'], ['1', '9', '7']]

【讨论】:

【参考方案2】:

您似乎想要一个列表列表。为此,您可以使用嵌套列表推导。

s = " 1 8 7 /n 6 18 2 /n 1 9 7 "
lst = [[int(x) for x in r.split()] for r in s.split('/n')]
print(lst)

输出

[[1, 8, 7], [6, 18, 2], [1, 9, 7]]

【讨论】:

太好了,谢谢,是的,我一直在为那个额外的 for 循环的逻辑而苦苦挣扎。真的很有帮助,谢谢。

以上是关于将带有硬编码换行符的字符串转换为python中的矩阵的主要内容,如果未能解决你的问题,请参考以下文章

将列表转换为数据框时如何使用“换行”命令?

将带有符号的 ES6 类转换为 JSON

如何将脚本转换为 Tcl 语言的硬编码版本?

如何将包装为字符串的向量转换为熊猫数据框中的numpy数组?

更改为变量中的硬编码纪元时间?

将新行 /n 转换为 angular 中的换行符