Я бегаю python 3.8.5. Насколько я понимаю, Python начиная с версии 3.6 может печатать Unicode с помощью оператора print (). Я вызываю print () со следующей строкой (представленной отладчиком Eclipse):
Точный код:
import xml.etree.ElementTree as ET
def getArticles(self, filename):
print("Parsing XML tree...")
tree = ET.parse(filename)
print("Done")
articles = tree.getroot()
for article in articles:
for body in article.iter('body'):
for title in article.iter('article-title'):
print (title.text) #This is the line that causes the crash
«Некоторые олигомеры стирола обладают пролиферативной активностью на MCF-7 человеческие \ n опухолевые клетки груди и аффинность связывания с рецептором эстрогена человека \ nα. "
и получение сообщения об ошибке:
UnicodeEncodeError: 'charmap' code c не могу закодировать символ '\ u03b1' в позиции 139: символ отображается на
Я считаю, что это символ α вызывает ошибку sh. Точный текст тега XML, из которого извлекается эта строка:
Certain styrene oligomers have proliferative activity on MCF-7 human
breast tumor cells and binding affinity for human estrogen receptor
α.
Мне неприятно задавать вопрос, так тесно связанный с другими, которые задавались ранее, но я не мог найти ничего подходящего именно с этой проблемой. Есть идеи?
EDIT:
Проблема все еще не решена, но я определил, что α
является шестнадцатеричным HTML5 представлением α. Поэтому я думаю, что проблема не в печати Unicode, а в представлении HTML5 шестнадцатеричных кодов.
Кроме того, python IDLE может обрабатывать такие инструкции, как:
print("α")
в то время как Eclipse , на котором я запускаю приведенный выше код, не может. Он даже не сохранит файл .py, если он содержит символ α. Я подтвердил изнутри скрипта, что использую Python 3.8.5 в Eclipse. Так что я чувствую, что проблема, вероятно, связана с IDE?
РЕШЕНИЕ: Проблема была в Eclipse. Я добавил следующую строку в конец eclipse.ini, и теперь она работает правильно:
-Dfile.encoding=UTF-8