Python 将带有数字的元组作为字符串保存到文件
我从机器学习中的Python开始,我对自己解决老Kaggle竞争很感兴趣。 我需要做的第一件事是将编码像素列表转换为一个边界框,将其转换为左上角和右下角的矩形坐标,并将其保存到特定的输出中,然后将其保存到一个文件中 我已经找到了使用RLE算法转换编码像素的例子,我需要更改它以保存到文件中。我的特殊问题是以Python 将带有数字的元组作为字符串保存到文件,python,Python,我从机器学习中的Python开始,我对自己解决老Kaggle竞争很感兴趣。 我需要做的第一件事是将编码像素列表转换为一个边界框,将其转换为左上角和右下角的矩形坐标,并将其保存到特定的输出中,然后将其保存到一个文件中 我已经找到了使用RLE算法转换编码像素的例子,我需要更改它以保存到文件中。我的特殊问题是以x1、y1、x2、y2格式将元组保存到文件中 我有一个代码,它从像素列表中获取第一个和最后一个坐标。首先,我尝试了: f=open(“file.txt”、“w”) f、 写入(str(掩码像素[
x1、y1、x2、y2
格式将元组保存到文件中
我有一个代码,它从像素列表中获取第一个和最后一个坐标。首先,我尝试了:
f=open(“file.txt”、“w”)
f、 写入(str(掩码像素[0])+str(掩码像素[len(掩码像素)-1]))
f、 写入(“\n”)
f、 关闭()
但是输出类似于(469344)(498447)
(这是一个元组,所以这很好)
我尝试使用join
函数,如下所示:
坐标=遮罩像素[0],遮罩像素[len(遮罩像素)-1]
f=打开(“file.txt”,“w”)
对于坐标中的x:
f、 写入(“,”.join(str(x)))
f、 写入(“\n”)
f、 关闭()
但它保存为(,4,6,9,,,3,4,4,)(,4,9,8,,,4,4,7,)
所以我试过了
f=open(“file.txt”、“a”)
f、 写入(str(协调1))
f、 写(“,”)
f、 写入(str(协调2))
f、 写入(“\n”)
f、 关闭()
但它保存为(469344),(498447)
,这仍然是我不想要的。
有人能给我一个提示吗?我该怎么做才能在一个类似
469344498447
的文件中找到它?我不是直接要求代码(我知道你们可能没有时间),但我想知道我应该读什么/学什么。你们可以在列表中转换元组并连接它们:
a = (469, 344)
b= (498,447)
result = list(a) + list(b)
输出:
[469, 344, 498, 447]
要返回到您的代码,它可能类似于:
f = open("file.txt", "w")
f.write(str(list(str(mask_pixels[0])) + list(str(mask_pixels[len(mask_pixels)-1]))))
f.write("\n")
f.close()
如果你想保存你所有的面具,你甚至可以做一个双重列表:
a = (469, 344)
b= (498,447)
c = (512,495)
list_of_tuples = [a, b, c]
result = [item for sublist in list_of_tuples for item in sublist]
Out : [469, 344, 498, 447, 512, 495]
输出
469, 344, 498, 447
将所有元组追加到列表中。然后从元组列表中展平列表。然后将展开列表写入文件。此外,您可以尝试使用此
遮罩像素[0]+遮罩像素[len(遮罩像素)-1]
。不是将它们转换成字符串格式,而是将它们合并到一个列表中。第二种方法可能与@Arkistarvh Kltzuonstev重复我仍然有括号(469、344、498、447)
,但第一种方法看起来不错,谢谢:)@SmartManoj可能是,谢谢链接,我会读到的,但乍一看可能是重复的,但是写不需要str,而不是列表吗?你是对的,我忘了重铸为字符串,谢谢!看起来还可以,但它会写下整个列表-正如我在问题中所写的,我只需要保存遮罩像素[0]
和遮罩像素[len(遮罩像素)-1]
,但感谢点击,我将检查它并将其用于我的代码:)
469, 344, 498, 447