#python #xml #file #floating-point
#python #xml #файл #с плавающей запятой
Вопрос:
Я анализирую XML-файл с некоторыми координатами на Python для записи преобразованного выходного файла. Проблема в том, что некоторые координаты равны -0.00, и у меня возникли некоторые проблемы с их анализом в другой системе. Мне нужно, чтобы они были равны 0.00 вместо -0.00. Как я мог добиться такого?
Это то, что я делаю до сих пор:
for node in nodes:
nodeName = node.attrib['name']
nodeParts = nodeName.split('.')
nodeName = nodeParts[0]
if nodeName == 'scene':
f.write(nodeParts[1] 't')
position = node.find('position')
f.write('%.2f ' % float(position.attrib['x']))
f.write('%.2f ' % float(position.attrib['y']))
f.write('%.2fn' % float(position.attrib['z']))
Ответ №1:
Если значение равно нулю (положительное или отрицательное), примите абсолютное значение:
>>> x = float('-0.0')
>>> x
-0.0
>>> abs(x)
0.0
Ответ №2:
Вам не нужно abs()
.
>>> test_values = [-1.0, -0.0, 0.0, 1.0]
>>> test_values
[-1.0, -0.0, 0.0, 1.0]
>>> [x if x else 0.0 for x in test_values]
[-1.0, 0.0, 0.0, 1.0]
>>> [x or 0.0 for x in test_values]
[-1.0, 0.0, 0.0, 1.0]
>>> [x 0.0 for x in test_values]
[-1.0, 0.0, 0.0, 1.0]
Ответ №3:
Может быть, вы могли бы разделить строку, прежде чем анализировать ее как число? Просто удалите «-» из поля ввода.
Ответ №4:
Вы можете использовать тот факт, что отрицательный ноль сравнивается с положительным нулем:
def f(x):
return 0. if x == 0. else x
Это превращается -0.
в 0.
, и оставляет все остальные числа нетронутыми.