Trong python, cách thanh lịch nhất để tạo tài liệu HTML là gì. Tôi hiện đang tự thêm tất cả các thẻ vào một chuỗi khổng lồ và viết nó vào một tệp. Có cách nào thanh lịch hơn để làm điều này không?Tạo tài liệu HTML trong python
Trả lời
Tôi khuyên bạn nên sử dụng xml.dom để thực hiện việc này.
http://docs.python.org/library/xml.dom.html
đọc trang hướng dẫn này, nó có phương pháp để xây dựng XML (và do đó XHTML). Nó làm cho tất cả các nhiệm vụ XML dễ dàng hơn nhiều, bao gồm thêm các nút con, các kiểu tài liệu, thêm thuộc tính, tạo các nút văn bản. Điều này sẽ có thể hỗ trợ bạn trong phần lớn những điều bạn sẽ làm để tạo HTML.
Nó cũng rất hữu ích cho việc phân tích và xử lý các tài liệu xml hiện có.
Hope this helps
PS
Đây là một hướng dẫn mà sẽ giúp bạn với việc áp dụng các cú pháp
HTML không phải là một tập con của XML. Nếu bạn đang sử dụng một công cụ XML, bạn sẽ tạo ra XHTML, chứ không phải HTML. – You
@Bạn là điểm công bằng tôi sẽ sửa câu trả lời của tôi –
Đó là một sự thiếu nghiêm trọng mà Python không có xml, html cụ thể (ví dụ: có các phương thức như div (id = 'myid', otherattr = '.. . '), ul() vv) Phiên bản này là tiêu chuẩn (có các bên thứ 3). Perl và Ruby đều làm. – JDonner
Vâng, bạn đang tìm kiếm .writelines tập tin
Một chuỗi thường là một danh sách hoặc một mảng. Vì vậy, đặt tất cả các dòng của bạn vào một danh sách hoặc mảng. Và quăng chúng vào chức năng dưới đây.
Hãy chắc chắn để loại bỏ bất kỳ hằng dòng mới từ chuỗi của bạn chỉ để được an toàn
Python Documentation (search for file.writelines)
file.writelines (sequence) Viết một chuỗi các chuỗi vào tập tin. Trình tự có thể là bất kỳ đối tượng tạo chuỗi lặp nào, thường là một danh sách các chuỗi. Không có giá trị quay lại. Writelines() không thêm dấu tách dòng.)
Tôi khuyên bạn nên sử dụng một trong nhiều ngôn ngữ mẫu có sẵn cho python, ví dụ: built into Django (bạn không có để sử dụng phần còn lại của Django để sử dụng công cụ tạo khuôn mẫu của nó) - truy vấn google sẽ cung cấp cho bạn nhiều triển khai mẫu thay thế khác.
Tôi thấy rằng việc học thư viện mẫu giúp theo nhiều cách - bất cứ khi nào bạn cần tạo e-mail, trang HTML, tệp văn bản hoặc tương tự, bạn chỉ cần viết mẫu, tải nó với thư viện mẫu của bạn mã mẫu tạo ra sản phẩm đã hoàn thành.
Dưới đây là một số mã đơn giản để giúp bạn bắt đầu:
#!/usr/bin/env python
from django.template import Template, Context
from django.conf import settings
settings.configure() # We have to do this to use django templates standalone - see
# http://stackoverflow.com/questions/98135/how-do-i-use-django-templates-without-the-rest-of-django
# Our template. Could just as easily be stored in a separate file
template = """
<html>
<head>
<title>Template {{ title }}</title>
</head>
<body>
Body with {{ mystring }}.
</body>
</html>
"""
t = Template(template)
c = Context({"title": "title from code",
"mystring":"string from code"})
print t.render(c)
Nó thậm chí còn đơn giản hơn nếu bạn có mẫu trên đĩa - kiểm tra render_to_string chức năng có thể tải mẫu từ đĩa từ một danh sách được xác định trước của con đường tìm kiếm, điền với dữ liệu từ một dictory và render thành một chuỗi - tất cả trong một cuộc gọi hàm.
Tôi nghĩ về điều này, nhưng tôi không nghĩ đó chính là điều mà OP đang yêu cầu. Có vẻ như họ muốn xây dựng chính HTML theo lập trình, trong khi một mẫu giả sử bạn đã có HTML nhưng chỉ cần điền vào một số biến. –
Có vẻ như họ có nội dung sẵn sàng và sau đó cần dán html xung quanh nội dung. Đây chính xác là công cụ tạo khuôn mẫu. – Wilduck
Ngoài ra, nếu bạn muốn có một động cơ templating giống như một trong Django, sử dụng Jinja2. Nó nhanh hơn, mạnh hơn và là một dự án độc lập. http://jinja.pocoo.org/docs/ – Wilduck
Tôi tìm thấy yattag là cách thanh lịch nhất để thực hiện việc này.
from yattag import Doc
doc, tag, text = Doc().tagtext()
with tag('html'):
with tag('body'):
with tag('p', id = 'main'):
text('some text')
with tag('a', href='/my-url'):
text('some link')
result = doc.getvalue()
Nó đọc như html, với lợi ích bổ sung mà bạn không phải đóng thẻ.
Tôi đang sử dụng đoạn mã gọi là throw_out_your_templates
đối với một số dự án của riêng tôi:
https://github.com/tavisrudd/throw_out_your_templates
https://bitbucket.org/tavisrudd/throw-out-your-templates/src
Thật không may, không có gói pypi cho nó và nó không phải là một phần của bất kỳ phân phối vì điều này chỉ có ý nghĩa như một chứng minh-khái niệm. Tôi cũng không thể tìm thấy ai đó đã lấy mã và bắt đầu duy trì nó như là một dự án thực tế. Tuy nhiên, tôi nghĩ rằng nó là giá trị một thử ngay cả khi nó có nghĩa là bạn phải gửi bản sao của riêng bạn của throw_out_your_templates.py
với mã của bạn.
Tương tự như đề xuất sử dụng yattag của John Smith Tùy chọn, mô-đun này không yêu cầu bạn học bất kỳ ngôn ngữ tạo mẫu nào và cũng đảm bảo rằng bạn không bao giờ quên đóng thẻ hoặc trích dẫn các ký tự đặc biệt. Mọi thứ vẫn được viết bằng Python. Dưới đây là một ví dụ về cách sử dụng nó:
html(lang='en')[
head[title['An example'], meta(charset='UTF-8')],
body(onload='func_with_esc_args(1, "bar")')[
div['Escaped chars: ', '< ', u'>', '&'],
script(type='text/javascript')[
'var lt_not_escaped = (1 < 2);',
'\nvar escaped_cdata_close = "]]>";',
'\nvar unescaped_ampersand = "&";'
],
Comment('''
not escaped "< & >"
escaped: "-->"
'''),
div['some encoded bytes and the equivalent unicode:',
'你好', unicode('你好', 'utf-8')],
safe_unicode('<b>My surrounding b tags are not escaped</b>'),
]
]
Nếu bạn đang xây dựng tài liệu HTML hơn tôi đánh giá cao đề nghị sử dụng một hệ thống mẫu (như jinja2) như những người khác đã gợi ý. Nếu bạn cần một số bit html cấp thấp (có thể là đầu vào cho một trong các mẫu của bạn), thì gói xml.etree là gói python chuẩn và có thể phù hợp với hóa đơn độc đáo.
import sys
from xml.etree import ElementTree as ET
html = ET.Element('html')
body = ET.Element('body')
html.append(body)
div = ET.Element('div', attrib={'class': 'foo'})
body.append(div)
span = ET.Element('span', attrib={'class': 'bar'})
div.append(span)
span.text = "Hello World"
ET.ElementTree(html).write(sys.stdout, encoding='utf8',
method='html')
In như sau:
<html><body><div class="foo"><span class="bar">Hello World</span></div></body></html>
- 1. nosetests --cover-html không tạo tài liệu html
- 2. Tài liệu HTML làm mới Python
- 3. Trình tạo tài liệu HTML cho .NET
- 4. Tạo tài liệu HTML từ WSDL
- 5. Tạo một tệp PDF tài liệu Python
- 6. Tạo tài liệu văn bản (Python)
- 7. Format tài liệu HTML
- 8. Tài liệu HTML sang PDF?
- 9. Tạo <canvas> nền của tài liệu html
- 10. Tài liệu Python trong Eclipse
- 11. Loại tài liệu HTML nào?
- 12. Tạo tài liệu mã HTML của một tệp đơn
- 13. Tải Tài liệu Google dưới dạng HTML
- 14. cách tạo tài liệu api
- 15. Nhân sư tạo tài liệu trống
- 16. Tạo html khá khác trong Python
- 17. Tạo tài liệu Tastypie
- 18. tài liệu Import HTML sử dụng HTML link rel
- 19. Tạo tài liệu Javascript
- 20. Số id lý tưởng trong tài liệu dom hoặc html
- 21. tài liệu mã cho python
- 22. Tạo tài liệu PDF trong ASP.NET
- 23. Tải tài liệu html trong javascript từ văn bản
- 24. tạo javadoc làm tài liệu word
- 25. tạo một tài liệu javascript Object
- 26. Tạo tài liệu trong tự động xây dựng
- 27. Cách tạo tài liệu XPS?
- 28. tạo tài liệu docx động
- 29. Cách sử dụng Python để lập trình tạo một phần tài liệu Sphinx
- 30. Tạo tài liệu REST API
có thể trùng lặp của [python phát html] (http://stackoverflow.com/questions/1548474/python-html-generator). Nếu bạn đang tạo XHTML, hãy xem xét sử dụng một công cụ XML. – You
Có [một số hệ thống templating] (http://wiki.python.org/moin/Templating) có sẵn cho Python. Có phải đó là những gì bạn đang tìm kiếm? –