我相信问题的原因是Python(对我来说,它只发生在运行于centos7.6linux上的python3中,打印到MacOS上的终端窗口上)由于语言环境的设置,无法确定如何打印包含非ascii字符的字符串。可以使用locale命令查看结果。我的一开始一切都设为“C”。我将LANG环境变量设置为en_美国UTF-8。在那样的环境下,它对我有效。
在csh中,可以使用setenv LANG en_US.UTF-8
在bash中使用:
^{pr2}$
我的问题是因为Series Description元素中有“µ”。该文件是西门子扫描仪上SPECT重建的衰减图。我使用下面的Python代码来帮助解决问题。在#! /usr/bin/env python3
import pydicom as dicom
from sys import exit, argv
def myprint(ds, indent=0):
"""Go through all items in the dataset and print them with custom format
Modelled after Dataset._pretty_str()
"""
dont_print = ['Pixel Data', 'File Meta Information Version']
indent_string = " " * indent
next_indent_string = " " * (indent + 1)
for data_element in ds:
if data_element.VR == "SQ": # a sequence
print(indent_string, data_element.name)
for sequence_item in data_element.value:
myprint(sequence_item, indent + 1)
print(next_indent_string + " -")
else:
if data_element.name in dont_print:
print("""""")
else:
repr_value = repr(data_element.value)
if len(repr_value) > 50:
repr_value = repr_value[:50] + "..."
try:
print("{0:s} {1:s} = {2:s}".format(indent_string,
data_element.name,
repr_value))
except:
print(data_element.name,'****Error printing value')
for f in argv[1:]:
ds = dicom.dcmread(f)
myprint(ds, indent=1)
这是基于来自]1的myprint函数
代码试图打印出所有的数据项。它捕捉异常并在出现错误时打印“****错误打印值”。在