[u'String']
là một đại diện văn bản của một danh sách có chứa một chuỗi Unicode trên Python 2.
Nếu bạn chạy print(some_list)
thì nó tương đương với
print'[%s]' % ', '.join(map(repr, some_list))
tức là, để tạo ra một đại diện văn bản của một đối tượng Python với các loại list
, repr()
chức năng được gọi cho mỗi mục.
Đừng nhầm lẫn một đối tượng Python và biểu diễn văn bản của nó - repr('a') != 'a'
và thậm chí đại diện văn bản của văn bản đại diện khác: repr(repr('a')) != repr('a')
.
repr(obj)
trả về một chuỗi có chứa bản trình bày có thể in của đối tượng. Mục đích của nó là biểu diễn rõ ràng một đối tượng có thể hữu ích cho việc gỡ lỗi, trong một REPL. Thường là eval(repr(obj)) == obj
.
Để tránh gọi repr()
, bạn có thể in danh sách các mục trực tiếp (nếu họ là tất cả các chuỗi Unicode) ví dụ: print ",".join(some_list)
-nó in một dấu phẩy tách ra danh sách các chuỗi: String
Đừng mã hóa một chuỗi Unicode để byte bằng cách sử dụng mã hóa ký tự được mã hóa cứng, thay vào đó, hãy trực tiếp in Unicode trực tiếp. Nếu không, mã có thể không thành công do mã hóa không thể đại diện cho tất cả các ký tự, ví dụ: nếu bạn cố gắng sử dụng mã hóa 'ascii'
với các ký tự không phải ascii. Hoặc mã âm thầm tạo ra mojibake (dữ liệu bị hỏng được chuyển tiếp trong một đường ống) nếu môi trường sử dụng một mã hóa không tương thích với mã hóa được mã hóa cứng.
Rực rỡ. Cảm ơn. Xin lỗi vì lỗi đánh máy. – gnuchu
Bạn thực sự không phải thực hiện việc mã hóa, bởi vì OP chỉ thấy chuỗi repr vì đó là cách bạn thấy bất cứ điều gì khi bạn in một danh sách.soup [0] sẽ đủ để hiển thị đường thay vì repr, hiển thị nội dung của chuỗi chứ không phải dấu ngoặc kép và công cụ sửa đổi unicode. – ironfroggy
Bạn không nên mã hóa văn bản được biểu diễn dưới dạng Unicode thành byte trong hầu hết các trường hợp: bạn nên in Unicode trực tiếp bằng Python: ['print (',' .join ([u'ABC ', u' ... '])) '] (http://stackoverflow.com/a/36891685/4279) – jfs