- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
谁能告诉我 print sth
Và print str(sth)
之间的区别?
例如在 official documentation for sqlite3 的示例中,目前可以看到以下创建数据库的代码,然后使用工厂类包装从那里提取的数据:
(1) 创建数据库:
# I am using CPython 2.7, but I suppose 2.6 will be Ok as well
import sqlite3
conn = sqlite3.connect(":memory:")
c = conn.cursor()
c.execute('''create table stocks
(date text, trans text, symbol text, qty real, price real)''')
c.execute("""insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)""")
conn.commit()
c. đóng()
(2) 现在使用 Hàng ngang
工厂生产一些对象:
>>> conn.row_factory = sqlite3.Row
>>> c = conn.cursor()
>>> c.execute('select * from stocks')
>>> r = c.fetchone()
>>> type(r)
>>> r
(u'2006-01-05', u'BUY', u'RHAT', 100.0, 35.14)
如您所见,我们可以键入 r
hoặc print r
来获得行对象的这种很好的表示形式。
但是上面没有显示的是 print str(r)
会给你一些不同的东西——更像是:
所以我想知道是否有熟悉 CPython 实现的人可以解释 print 是如何从不支持 __chuỗi__
的对象中获取这种表示的?
或者我想另一个问题是——在上述表达式给出不同结果的情况下——我如何获得一个字符串,该字符串等同于用简单的 print obj
打印的字符串?
câu trả lời hay nhất
当我写这篇文章并寻找一些引用资料时,我实际上找到了大部分答案:
Python 对象的 C 实现可以实现 PyObject_Print()函数,它定义了将对象打印到文件的方式,包括 đầu ra chuẩn
;
因此,要获得该表示,可能应该使用 cStringIO模块(还没有尝试过,但应该可以)。
不过,我会把这个问题留在这里,希望有人会觉得它有用——或者提供更好的答案。
gia hạn cStringIO
Ví dụ:
import cStringIO as C; s = C.StringIO(); print >>s, r, ; s.getvalue()
-- 最后一个逗号有助于去掉换行符 [我认为取决于平台]
附言。关于 SO 的一些相关问题:
-- "Python print isn't using __repr__, __unicode__ or __str__ for unicode subclass?"
-- "Difference between __str__ and __repr__ in Python?"
(例如,第一个问题的 answer 答案有一个很好的 liên kết đến PyFile_WriteObject() 的代码。)
PPS。在 py3k 中,这个差异 seems to be gone completely .
关于python 打印与 __str__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914708/
Tôi đang làm việc với một tập hợp 173k điểm được dán nhãn là 160 nhóm. Tôi muốn giảm số lượng nhóm/cụm bằng cách hợp nhất những nhóm gần nhất (xuống còn 9 hoặc 10 nhóm). Tôi đã tìm kiếm sklearn hoặc các thư viện tương tự nhưng không thành công. Tôi đoán nó chỉ phân cụm qua knn
Tôi có một danh sách phẳng gồm các số được nhóm hợp lý thành nhóm 3, trong đó mỗi bộ ba là (số, __bỏ qua, cờ [0 hoặc 1]), ví dụ: [7,56,1, 8,0, 0, 2 ,0,0, 6,1,
Tôi đang sử dụng pipenv để quản lý các gói của mình. Tôi muốn viết một tập lệnh python để gọi một tập lệnh python khác bằng môi trường ảo khác (VE). Cách chạy python script 1 bằng VE1 và gọi p khác
Giả sử tôi có tệp script.py nằm ở path = "foo/bar/script.py". Tôi đang tìm cách truyền hàm exec_script() bằng Python từ Python chính của tôi
Điều này nghe có vẻ như một câu đố hay một trò đùa, nhưng thực sự tôi vẫn chưa tìm ra câu trả lời cho câu hỏi này. Vấn đề chính xác là gì? Tôi muốn chạy 2 tập lệnh. Trong tập lệnh đầu tiên, tôi gọi một tập lệnh khác, nhưng tôi muốn chúng tiếp tục song song chứ không phải theo hai luồng riêng biệt. Chủ yếu là vì tôi không muốn
Tôi có một phần mềm với python 2.5.5. Tôi muốn gửi lệnh sẽ khởi động tập lệnh trong python 2.7.5 và sau đó tiếp tục thực thi tập lệnh. Tôi đã thử sử dụng #!python2.7.5 và http://re
Tôi đang sử dụng dòng lệnh python (sử dụng python 2.7) và đang cố chạy tập lệnh Python. Hệ điều hành của tôi là Windows 7. Tôi đã đặt thư mục của mình vào thư mục chứa tất cả các tập lệnh của mình bằng cách sử dụng: os.chdir("
Tiết lộ nội dung: Đã giải quyết được một phần (xem phần cuối). Đây là một ví dụ về mã sử dụng tính năng nhúng Python: #include int main(int argc, char** argv) { Py_SetPythonHome
Giả sử tôi có danh sách sau, tương ứng với giá cổ phiếu tại các thời điểm: giá = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4 , 11] Tôi muốn xác định điều nào sau đây nói chung là phù hợp nhất
Vì vậy, tôi đang cố gắng thay đổi nền của khung này khi một nút radio nhất định được chọn. Khung của tôi thuộc một lớp và chức năng của các nút radio nằm ngoài lớp đó. (Bằng cách này tôi có thể gọi chúng trên tất cả các khung khác.) Vấn đề là bất cứ khi nào tôi chọn nút radio, tôi đều gặp lỗi sau: co
Tôi đang cố gắng so sánh một chuỗi với một biểu thức chính quy trong python như sau, #!/usr/bin/env python3 import re str1 = "Expecting property name
Hãy xem xét mô-đun Boost.Python nguyên mẫu sau đây, mô-đun này nhập lớp "D" từ tệp tiêu đề C++ riêng biệt. /* tập tin: a/b.cpp */ BOOST_PYTHON_MODULE(c)
Làm cách nào để viết chương trình để "xác định số dòng của lệnh gọi hàm?" Mô-đun kiểm tra python cung cấp tùy chọn để xác định số dòng, tuy nhiên, def di(): return Inspection.currentframe().f_back.f_l
Tôi đã cài đặt Python 2.7 bằng macports và do biến $PATH của tôi, đây là những gì tôi nhận được khi nhập $python. Tuy nhiên, virtualenv sử dụng Python 2.6 theo mặc định, ngoại trừ
Tôi chỉ muốn hỏi làm thế nào để tăng tốc độ nghiên cứu trên python. Tôi có một dòng chuỗi dài có độ dài 176861 (tức là các ký tự chữ và số có một số ký hiệu) và tôi đã kiểm tra dòng này bằng hàm này để nghiên cứu: def getExe
list1= [u'%app%%General%%%Council%', u'%people%', u'%people%%Regional%%%Council%%Mandate%', u'%ppp%%Ge
Câu hỏi này đã có câu trả lời ở đây: Pythonic có sử dụng khả năng hiểu danh sách chỉ cho các tác dụng phụ không? (7 câu trả lời) Đã đóng 4 tháng trước. kể
Tôi muốn kết hợp hai danh sách thành một danh sách bằng Python như sau: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright ", "Tháng Sáu","và" ,"Ju
Tôi đang chạy Mac OS X 10.8.4 (Darwin 12.4.0) với bản phát hành Boost mới nhất (1.55.0). Tôi đang làm theo hướng dẫn ở đây để xây dựng hướng dẫn Boost-Pyth đi kèm với bản phân phối của tôi
Đang học Python, tôi đang cố gắng tạo một công cụ quét web mà không cần bất kỳ thư viện của bên thứ 3 nào để quy trình này không được sắp xếp hợp lý đối với tôi và tôi biết mình đang làm gì. Tôi đã xem một số tài nguyên trực tuyến nhưng tất cả chúng đều khiến tôi bối rối về điều gì đó. ngoại hình html
Tôi là một lập trình viên xuất sắc, rất giỏi!