Làm thế nào tôi có thể lấy ký tự °
[độ] thành một chuỗi?
Bhargav Rao
47.9K27 Huy hiệu vàng123 Huy hiệu bạc138 Huy hiệu đồng27 gold badges123 silver badges138 bronze badges
hỏi ngày 9 tháng 7 năm 2010 lúc 17:39Jul 9, 2010 at 17:39
1
Đây là phiên bản thân thiện nhất của lập trình viên để chỉ định ký tự Unicode:
degree_sign = u'\N{DEGREE SIGN}'
Trình tự thoát:
0 >>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
>>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
0Ý nghĩa: Tên được đặt tên ký tự trong cơ sở dữ liệu Unicode Character named name in the Unicode database
Tài liệu tham khảo: //docs.python.org/3/reference/lexical_analysis.html#string-and-ytes-literals //docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
Note:
"N" phải là chữ hoa trong cấu trúc
1 để tránh sự nhầm lẫn với ký tự>>> import dis >>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval'] >>> dis.dis[c] 1 0 LOAD_CONST 0 [u'\xb0'] 3 RETURN_VALUE >>> c.co_consts [u'\xb0',] >>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval'] >>> c.co_consts [u'\xb0-\u2205',] >>> print c.co_consts[0] °-∅
2>>> import dis >>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval'] >>> dis.dis[c] 1 0 LOAD_CONST 0 [u'\xb0'] 3 RETURN_VALUE >>> c.co_consts [u'\xb0',] >>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval'] >>> c.co_consts [u'\xb0-\u2205',] >>> print c.co_consts[0] °-∅
Tên ký tự bên trong niềng răng xoăn có thể là bất kỳ trường hợp nào
Nó dễ nhớ tên của một ký tự hơn chỉ số Unicode của nó. Nó cũng dễ đọc hơn, Ergo Debugging thân thiện. Sự thay thế ký tự xảy ra tại thời điểm biên dịch, tức là tệp
>>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
3 sẽ chứa một hằng số cho >>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
4:>>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
Coder hăng hái
3.6579 Huy hiệu vàng28 Huy hiệu bạc 50 Huy hiệu Đồng9 gold badges28 silver badges50 bronze badges
Đã trả lời ngày 9 tháng 7 năm 2010 lúc 21:18Jul 9, 2010 at 21:18
Tzottzottzot
89,8K29 Huy hiệu vàng138 Huy hiệu bạc201 Huy hiệu đồng29 gold badges138 silver badges201 bronze badges
>>> u"\u00b0"
u'\xb0'
>>> print _
°
BTW, tất cả những gì tôi đã làm là tìm kiếm "mức độ Unicode" trên Google. Điều này mang lại hai kết quả: "Dấu hiệu U+00B0" và "C ERGE CELSIUS U+2103", thực sự khác nhau:
>>> u"\u2103"
u'\u2103'
>>> print _
℃
Đã trả lời ngày 9 tháng 7 năm 2010 lúc 17:41Jul 9, 2010 at 17:41
Adamkadamkadamk
43,8K7 Huy hiệu vàng49 Huy hiệu bạc56 Huy hiệu Đồng7 gold badges49 silver badges56 bronze badges
3
Đặt dòng này ở đầu nguồn của bạn
# -*- coding: utf-8 -*-
Nếu biên tập viên của bạn sử dụng mã hóa khác, hãy thay thế cho UTF-8
Sau đó, bạn có thể bao gồm các ký tự UTF-8 trực tiếp trong nguồn
Đã trả lời ngày 9 tháng 7 năm 2010 lúc 19:14Jul 9, 2010 at 19:14
John La Rooyjohn La RooyJohn La Rooy
288K51 Huy hiệu vàng359 Huy hiệu bạc500 Huy hiệu Đồng51 gold badges359 silver badges500 bronze badges
1
Bạn cũng có thể sử dụng
>>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
5 để in dấu hiệu. Dưới đây là một ví dụ sử dụng vỏ tương tác Python 3.6.5:
Alamoot
1.7366 huy hiệu vàng29 Huy hiệu bạc47 Huy hiệu đồng6 gold badges29 silver badges47 bronze badges
Đã trả lời ngày 7 tháng 5 năm 2018 lúc 4:37May 7, 2018 at 4:37
ThePraskThePrasktheprask
3112 Huy hiệu bạc3 Huy hiệu đồng2 silver badges3 bronze badges
Chỉ cần sử dụng
>>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
6 Python sẽ tự động chuyển đổi nó
Đã trả lời ngày 5 tháng 12 năm 2015 lúc 4:39Dec 5, 2015 at 4:39
JustinjustinJustin
1211 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges
Câu trả lời trên giả định rằng mã hóa UTF8 có thể được sử dụng một cách an toàn - cái này được nhắm mục tiêu cụ thể cho Windows.
Windows Console Normaly sử dụng mã hóa CP850 và không phải UTF-8, vì vậy nếu bạn cố gắng sử dụng một tệp được mã hóa, bạn sẽ nhận được 2 ký tự [không chính xác] đó
>>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
7 thay vì mức độ °
.not utf-8, so if you try to use a source file utf8-encoded, you get those 2 [incorrect] characters >>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
7 instead of a degree °
.Trình diễn [sử dụng Python 2.7 trong bảng điều khiển Windows]:
deg = u'\xb0` # utf code for degree
print deg.encode['utf8']
đầu ra hiệu quả
>>> import dis
>>> c= compile['u"\N{DEGREE SIGN}"', '', 'eval']
>>> dis.dis[c]
1 0 LOAD_CONST 0 [u'\xb0']
3 RETURN_VALUE
>>> c.co_consts
[u'\xb0',]
>>> c= compile['u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval']
>>> c.co_consts
[u'\xb0-\u2205',]
>>> print c.co_consts[0]
°-∅
7.Khắc phục: Chỉ cần buộc mã hóa chính xác [hoặc sử dụng unicode tốt hơn]:
local_encoding = 'cp850' # adapt for other encodings
deg = u'\xb0'.encode[local_encoding]
print deg
hoặc nếu bạn sử dụng tệp nguồn xác định rõ ràng mã hóa:
# -*- coding: utf-8 -*-
local_encoding = 'cp850' # adapt for other encodings
print " The current temperature in the country/city you've entered is " + temp_in_county_or_city + "°C.".decode['utf8'].encode[local_encoding]
Đã trả lời ngày 7 tháng 6 năm 2016 lúc 11:46Jun 7, 2016 at 11:46
Serge Ballestaserge BallestaSerge Ballesta
Huy hiệu vàng 139K11116 Huy hiệu bạc236 Huy hiệu đồng11 gold badges116 silver badges236 bronze badges
0
Sử dụng Python
>>> u"\u00b0"
u'\xb0'
>>> print _
°
0, >>> u"\u00b0"
u'\xb0'
>>> print _
°
1, bạn có thể sử dụng:theta = 45
print[f"Theta {theta}\N{DEGREE SIGN}."]
Đầu ra:
>>> u"\u00b0"
u'\xb0'
>>> print _
°
2*Cải thiện câu trả lời của tzot
Đã trả lời ngày 7 tháng 6 năm 2021 lúc 0:07Jun 7, 2021 at 0:07