กำลังพยายามพิมพ์อักขระ Unicode ไปยังคอนโซลโดยใช้ string.format()

ด้านล่างนี้คือตัวอย่างที่เป็นปัญหา:

print '{:─^10}'.format('') # Print '─' character 10 times

ฉันใช้สิ่งนี้เพื่อสร้างเส้นขอบคอนโซลที่สวยงามและอื่นๆ ปัญหาคือการเรียกใช้สิ่งนี้ในไฟล์ py ของฉันด้วย # การเข้ารหัส UTF-8 ทำให้ฉัน: ValueError: ข้อกำหนดการแปลงไม่ถูกต้อง

หากฉันเรียกใช้สคริปต์เดียวกันนี้ใน python shell มันจะแยกอักขระที่ใช้ Escape ออกมา: '\xc4\xc4\xc4\x...'

ฉันไม่รู้ว่า (ในสคริปต์ของฉัน) จะพิมพ์อักขระ '─' ได้อย่างไร มันสามารถพิมพ์อักขระ '─' ได้ดีถ้าฉันใช้ print '─' เนื่องจากการเข้ารหัส UTF-8 แต่ด้วยเหตุผลบางประการจึงไม่อนุญาตให้เข้าไป ฟังก์ชัน string.format()

มีข้อเสนอแนะอะไรบ้าง? ฉันแน่ใจว่านี่อาจแก้ไขได้ง่าย แต่ฉันยังใหม่มากกับการเขียนโปรแกรม Python

ขอบคุณล่วงหน้า.


person Aedaeum    schedule 09.12.2011    source แหล่งที่มา


คำตอบ (1)


สมมติว่าคุณใช้ Python2 คุณต้องใช้สตริง Unicode (u'')

print u'{:─^10}'.format(u'')
person ekhumoro    schedule 09.12.2011
comment
ว้าว ฉันไม่อยากจะเชื่อเลยว่าฉันจะพลาดไป ฉันลอง u ต่อหน้า '{:─^10}' แต่ฉันไม่คิดว่าจะใส่ไว้ในอาร์กิวเมนต์รูปแบบ ขอบคุณมาก! ฉันรู้ว่านี่จะเป็นเรื่องง่าย ฮ่าๆ - person Aedaeum; 10.12.2011