Вы столкнетесь с проблемами с наивным преобразованием, потому что вам может потребоваться обработать элементы sequence (представьте, что набор данных представляет собой древовидную структуру данных) и необработанные данные для элементов с байтовыми VR как OB, OD, OF, OL, OW (см. здесь ). Однако, если все, что вас волнует, это элемент верхнего уровня набора данных:
# Make sure that `fieldnames` is a list of element tags
for tag in fieldnames:
if tag not in ds:
writer.writerow('')
continue
elem = ds[tag]
# Parse elem however you wish, watch out for elements with a byte VR though!
value = elem.value
if isinstance(value, bytes):
value = "Binary data of length {}".format(elem.length)
row = "{}, {}, {}".format(elem.tag, elem.VR, value)
writer.writerow(row)