Python 无法替换数组中的双空格

Python 无法替换数组中的双空格,python,arrays,python-3.x,Python,Arrays,Python 3.x,以下是我所尝试的和我正在努力实现的: >>> d = [[0.4246955,0.42829293,0.43621248,0.42680067], ... [0.42453277,0.42806646,0.43601942,0.42658913], ... [0.42681128,0.43040696,0.43824464,0.42888936], ... [0.42648485,0.4299298,0.43789476,0.42854127], ... [0.42436373

以下是我所尝试的和我正在努力实现的:

>>> d = [[0.4246955,0.42829293,0.43621248,0.42680067],
... [0.42453277,0.42806646,0.43601942,0.42658913],
... [0.42681128,0.43040696,0.43824464,0.42888936],
... [0.42648485,0.4299298,0.43789476,0.42854127],
... [0.42436373,0.4276249,0.43576592,0.4263624]]
>>> d
[[0.4246955, 0.42829293, 0.43621248, 0.42680067], [0.42453277, 0.42806646, 0.43601942, 0.42658913], [0.42681128, 0.43040696, 0.43824464, 0.42888936], [0.42648485, 0.4299298, 0.43789476, 0.42854127], [0.42436373, 0.4276249, 0.43576592, 0.4263624]]
>>> print(d)
[[0.4246955, 0.42829293, 0.43621248, 0.42680067], [0.42453277, 0.42806646, 0.43601942, 0.42658913], [0.42681128, 0.43040696, 0.43824464, 0.42888936], [0.42648485, 0.4299298, 0.43789476, 0.42854127], [0.42436373, 0.4276249, 0.43576592, 0.4263624]]
>>> s = ""
>>> for i in d:
...     s = s+str(i).replace("[","").replace("]","").replace(",","").strip()+"\n"
...
>>> s
'0.4246955 0.42829293 0.43621248 0.42680067\n0.42453277 0.42806646 0.43601942 0.42658913\n0.42681128 0.43040696 0.43824464 0.42888936\n0.42648485 0.4299298 0.43789476 0.42854127\n0.42436373 0.4276249 0.43576592 0.4263624\n'
>>> print(s)
0.4246955 0.42829293 0.43621248 0.42680067
0.42453277 0.42806646 0.43601942 0.42658913
0.42681128 0.43040696 0.43824464 0.42888936
0.42648485 0.4299298 0.43789476 0.42854127
0.42436373 0.4276249 0.43576592 0.4263624

>>> s = s.replace("  ","0 ")
>>> print(s)
0.4246955 0.42829293 0.43621248 0.42680067
0.42453277 0.42806646 0.43601942 0.42658913
0.42681128 0.43040696 0.43824464 0.42888936
0.42648485 0.4299298 0.43789476 0.42854127
0.42436373 0.4276249 0.43576592 0.4263624
可以看出,每个元素的长度都不相同。因此,在转换为字符串时,我得到了双空格,这干扰了我在另一个程序中的拆分过程。
我想知道如何用单空格或0和空格替换双空格,正如我在上述代码中尝试的那样。
例如,请参见以下内容:
字符串为:

0.4246955 0.42829293 0.43621248 0.42680067
0.42453277 0.42806646 0.43601942 0.42658913
0.42681128 0.43040696 0.43824464 0.42888936
0.42648485 0.4299298 0.43789476 0.42854127
0.42436373 0.4276249 0.43576592 0.4263624
,所以我希望它变成这样:

0.42469550 0.42829293 0.43621248 0.42680067
0.42453277 0.42806646 0.43601942 0.42658913
0.42681128 0.43040696 0.43824464 0.42888936
0.42648485 0.4299298 0.43789476 0.428541270
0.42436373 0.4276249 0.43576592 0.426362400

请让我知道我能做些什么。

我想你想完成这样的任务:

>>> result = "\n".join([" ".join([format(n, "0.08f") for n in line]) for line in d])
>>> print(result)
0.42469550 0.42829293 0.43621248 0.42680067
0.42453277 0.42806646 0.43601942 0.42658913
0.42681128 0.43040696 0.43824464 0.42888936
0.42648485 0.42992980 0.43789476 0.42854127
0.42436373 0.42762490 0.43576592 0.42636240

更改格式字符串(“0.08f”)以满足您的需要。

我猜您希望完成以下任务:

>>> result = "\n".join([" ".join([format(n, "0.08f") for n in line]) for line in d])
>>> print(result)
0.42469550 0.42829293 0.43621248 0.42680067
0.42453277 0.42806646 0.43601942 0.42658913
0.42681128 0.43040696 0.43824464 0.42888936
0.42648485 0.42992980 0.43789476 0.42854127
0.42436373 0.42762490 0.43576592 0.42636240

更改格式字符串(“0.08f”)以满足您的需要。

尝试使用简单的格式设置
.8f

>>> d = [[0.4246955, 0.42829293, 0.43621248, 0.42680067], [0.42453277, 0.42806646, 0.43601942, 0.42658913], [0.42681128, 0.43040696, 0.43824464, 0.42888936], [0.42648485, 0.4299298, 0.43789476, 0.42854127], [0.42436373, 0.4276249, 0.43576592, 0.4263624]]
>>> dFormatted = '\n'.join(' '.join(f'{num:.8f}' for num in nums) for nums in d)
>>> print(dFormatted)
0.42469550 0.42829293 0.43621248 0.42680067
0.42453277 0.42806646 0.43601942 0.42658913
0.42681128 0.43040696 0.43824464 0.42888936
0.42648485 0.42992980 0.43789476 0.42854127
0.42436373 0.42762490 0.43576592 0.42636240
>>>

尝试使用简单的格式设置
.8f

>>> d = [[0.4246955, 0.42829293, 0.43621248, 0.42680067], [0.42453277, 0.42806646, 0.43601942, 0.42658913], [0.42681128, 0.43040696, 0.43824464, 0.42888936], [0.42648485, 0.4299298, 0.43789476, 0.42854127], [0.42436373, 0.4276249, 0.43576592, 0.4263624]]
>>> dFormatted = '\n'.join(' '.join(f'{num:.8f}' for num in nums) for nums in d)
>>> print(dFormatted)
0.42469550 0.42829293 0.43621248 0.42680067
0.42453277 0.42806646 0.43601942 0.42658913
0.42681128 0.43040696 0.43824464 0.42888936
0.42648485 0.42992980 0.43789476 0.42854127
0.42436373 0.42762490 0.43576592 0.42636240
>>>

在您执行替换之前,我在
s
中没有看到任何双空格。没有双空格,为什么您认为它没有在省略0的位置对齐?实际上,在这里看不到它,但是当我在客户端捕获它时,我会看到两个空格。我只想消除它,在值较少的最后一个值中附加0。。它可行吗?为什么要将浮动列表转换为字符串?为什么不先展平然后合并?您可以使用展平输入列表,然后以所需的精度打印每个数字。在您进行替换之前,我在
s
中没有看到任何双空格。没有双空格,为什么您认为它在省略0的位置没有对齐?实际上,在这里不会看到它,但当我在客户端捕捉到一个字符串时,我会看到两个空格。我只想消除它,在值较少的最后一个值中附加0。。它可行吗?为什么要将浮动列表转换为字符串?为什么不先展平然后加入呢?你可以用它展平输入列表,然后以你想要的精度打印每个数字。先生,让我试试。我想这会有帮助的。让我试试,先生。我想这会有帮助的。f strings()比
format
函数或
string.format
方法更好更简洁,但只在3.6iInm中可用。@PauloScardine是的,你可以用
'{num.8f}.format(num=num)
'{.8f}.format(num)
'%.8f''%num
format()来实现
就像在你的回答中一样,字符串()比
format
函数或
string.format
方法更好更简洁,但只在3.6iInM中可用。@PauloScardine是的,你可以用
'{num.8f}.format(num=num)
'{.8f}.format(num)
'.8f'%num
格式()
喜欢你的答案