আইপিথন আউটপুটটিতে এইচটিএমএল এমবেড করবেন কীভাবে?


158

আইপিথন আউটপুটটিতে রেন্ডার করা এইচটিএমএল আউটপুট এম্বেড করা কি সম্ভব?

একটি উপায় ব্যবহার করা হয়

from IPython.core.display import HTML
HTML('<a href="http://example.com">link</a>')

বা (আইপিথন মাল্টলাইন সেল ওরফে)

%%html
<a href="http://example.com">link</a>

যা ফর্ম্যাট লিঙ্কটি ফেরত দেয় তবে

  1. এই লিঙ্কটি কনসোল থেকে নিজেই ওয়েবপৃষ্ঠা সহ কোনও ব্রাউজার খুলবে না । আইপিথন নোটবুকগুলি যদিও সৎভাবে উপস্থাপনা সমর্থন করে।
  2. কীভাবে HTML()একটি তালিকা বা pandasমুদ্রিত টেবিলের মধ্যে অবজেক্ট রেন্ডার করতে হবে তা সম্পর্কে আমি অসচেতন । আপনি করতে পারেন df.to_html(), কিন্তু কক্ষের অভ্যন্তরে লিঙ্ক তৈরি না করেই।
  3. পাইপার্ম পাইথন কনসোলে এই আউটপুটটি ইন্টারেক্টিভ নয় (কারণ এটি কিউটি নয়)।

আমি কীভাবে এই ত্রুটিগুলি কাটিয়ে আইপিথন আউটপুটটিকে আরও কিছুটা ইন্টারেক্টিভ করতে পারি?


2
এই আপনি কি করতে চান? ipython.org/ipython-doc/dev/config/integrating.html
cel

@cel এটি এইচটিএমএল আউটপুট ঠিক একইভাবে ফর্ম্যাট HTML()করে তবে আমি এখনও আইটেম 1 এবং 2 সমাধান করতে পারিনি
আন্তন তারাসেনকো

2
আমি কোনও বিশেষজ্ঞ নই, সুতরাং এটি ভুল হতে পারে তবে আমি মনে করি যে অন্য বস্তুর উপস্থাপনের জন্য স্বেচ্ছাচারিত এইচটিএমএল কোডটি কাজ করবে না। এটি যুক্তিযুক্ত এবং কোনও বস্তুর প্রতিনিধিত্ব করবে এবং সম্ভবত এটি কাম্য নয়। তবে আপনি নিশ্চিত যে মোড়কে বস্তুগুলি লিখতে পারে, এতে মূল অবজেক্ট থাকে এবং একটি কাস্টম এইচটিএমএল উপস্থাপনা সরবরাহ করতে repr_html পদ্ধতিটি ব্যবহার করতে পারে।
সেল

আসলে, আমি সবেমাত্র আপনার কোডটি
চালিয়েছি

জাভাস্ক্রিপ্ট যুক্ত করা হচ্ছে: স্ট্যাকওভারফ্লো
আন্তন তারাসনকো

উত্তর:


252

এটি আমার পক্ষে কাজ করে বলে মনে হচ্ছে:

from IPython.core.display import display, HTML
display(HTML('<h1>Hello, world!</h1>'))

কৌতুকটি এটি "প্রদর্শন" তে মোড়ানোও to

সূত্র: http://python.6.x6.nabble.com/Printing-HTML-within-IPython- নোটবুক-IPython-specific- ব্যাখ্যাtyprint-tp5016624p5016631.html


2
এই সংস্করণটি জাভাস্ক্রিপ্টকে মুক্ত করতে পারে?
জোশুয়া মুর 21

4
এখানে ডিসপ্লে সম্ভাবনাগুলি দেখানো একটি উদাহরণ নোটবুকের লিঙ্ক: সমৃদ্ধ আউটপুট
রোমেন

1
প্রদর্শন অংশ একটি নোটবুক এম্বেড জাভাস্ক্রিপ্ট আমাকে অনুমতি দেওয়া
lamecicle

আমার যদি ড্যাশ দিয়ে এটি তৈরি করার প্রয়োজন হয় এবং আমার সমস্ত অজগর কোডটি জপিটার .ipynb ফাইলে থাকে তবে কোনও ওয়েবসাইট তৈরির জন্য এটি কি একটি সম্ভাব্য পদ্ধতি?
ব্যবহারকারী 8322222

আমার অভিপ্রেতটি হ'ল যদি ড্যাশ এবং ফ্লাস্কের তৈরি ড্যাশবোর্ড সম্বলিত কোনও ওয়েবসাইট তৈরি করতে হবে এবং আমার সমস্ত কোডটি জপিটার .ipynb ফাইলগুলিতে থাকে তবে আমি কেবল সেই অংশটি করতে এটমের একটি পৃথক এইচটিএমএল এবং সিএসএস ফাইল ব্যবহার করতে পারি এবং এটির সাথে লিঙ্ক করতে পারি Jupyter ফাইলগুলিতে কোড বা আমার সমস্ত কোড .Ipynb ফাইলের মধ্যে থাকা দরকার। আমি এই বিষয়ে নতুন থাকায় এই বিষয়ে যে কোনও সহায়তার প্রশংসা করব।
ব্যবহারকারী 8322222

34

কিছু সময় আগে জুপিটার নোটবুকগুলি HTML বিষয়বস্তু থেকে জাভাস্ক্রিপ্ট সরিয়ে নেওয়া শুরু করেছে [ # 3118 ]। এখানে দুটি সমাধান রয়েছে:

স্থানীয় এইচটিএমএল পরিবেশন করা হচ্ছে

আপনি যদি এখনই আপনার পৃষ্ঠায় জাভাস্ক্রিপ্ট সহ কোনও এইচটিএমএল পৃষ্ঠা এম্বেড করতে চান, তবে সবচেয়ে সহজ কাজটি হ'ল আপনার এইচটিএমএল ফাইলটি আপনার নোটবুকের সাহায্যে ডিরেক্টরিতে সংরক্ষণ করা এবং তারপরে এইচটিএমএল নিম্নরূপে লোড করা উচিত:

from IPython.display import IFrame

IFrame(src='./nice.html', width=700, height=600)

রিমোট এইচটিএমএল পরিবেশন করা হচ্ছে

আপনি যদি কোনও হোস্টেড সমাধানটিকে পছন্দ করেন তবে আপনি আপনার HTML পৃষ্ঠাটি এস 3-তে একটি অ্যামাজন ওয়েব পরিষেবাদি "বালতি" এ আপলোড করতে পারেন, সেই বালতিতে সেটিংস পরিবর্তন করতে পারেন যাতে বালতি হোস্টটিকে একটি স্ট্যাটিক ওয়েবসাইট তৈরি করতে পারে, তারপরে আপনার নোটবুকটিতে একটি আইফ্রেমে উপাদান ব্যবহার করুন:

from IPython.display import IFrame

IFrame(src='https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html', width=700, height=600)

এটি আপনার এইচটিএমএল সামগ্রী এবং জাভাস্ক্রিপ্টকে কোনও আইফ্রেমে রেন্ডার করবে, ঠিক যেমন আপনি অন্য কোনও ওয়েব পৃষ্ঠায় করতে পারেন:

<iframe src='https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html', width=700, height=600></iframe>


1
অনেক ধন্যবাদ. এটাই আমি খুঁজছিলাম। আমি আমার স্থিতিশীল ব্লগ সাইটে প্লট চার্ট ইন্টারেক্টিভভাবে রেন্ডার করতে এটি ব্যবহার করি
Okroshiashvili

কোনও স্থানীয় ফাইল এডাব্লুএস-তে কিছু ফেলে দেওয়ার চেয়ে সহজ হবে না?
vy32

1
এটি নিখুঁত! আমার ঠিক কী প্রয়োজন - কারণ আমি অ্যামাজন সেজমেকারের একটি জুপিটার নোটবুকে একটি সম্পূর্ণ ওয়েব অ্যাপ্লিকেশন হোস্ট করতে চাই। ধন্যবাদ!
আদি লেভিন

2
অতিরিক্ত চিহ্নগুলির জন্য, একটি সেল থেকে অবিচ্ছিন্নভাবে একটি ইন্টারেক্টিভ ওয়েব সার্ভার চালনা করুন এবং এটি অন্যান্য সেলগুলিতে আইফ্রেমের অভ্যন্তরে তৈরি করা পৃষ্ঠাগুলির সাথে ইন্টারেক্ট করুন!
হোল্ডেনওয়েব


13

সম্পর্কিত: বর্গ def _repr_html_(self): ...তৈরির সময়, এর উদাহরণগুলির একটি কাস্টম এইচটিএমএল উপস্থাপনা তৈরি করতে ব্যবহার করা যেতে পারে:

class Foo:
    def _repr_html_(self):
        return "Hello <b>World</b>!"

o = Foo()
o

হিসাবে রেন্ডার হবে:

হ্যালো ওয়ার্ল্ড !

আরও তথ্যের জন্য আইপিথনের ডক্স দেখুন

একটি উন্নত উদাহরণ:

from html import escape # Python 3 only :-)

class Todo:
    def __init__(self):
        self.items = []

    def add(self, text, completed):
        self.items.append({'text': text, 'completed': completed})

    def _repr_html_(self):
        return "<ol>{}</ol>".format("".join("<li>{} {}</li>".format(
            "☑" if item['completed'] else "☐",
            escape(item['text'])
        ) for item in self.items))

my_todo = Todo()
my_todo.add("Buy milk", False)
my_todo.add("Do homework", False)
my_todo.add("Play video games", True)

my_todo

রেন্ডার করবে:

  1. Milk দুধ কিনুন
  2. Home হোম ওয়ার্ক করুন
  3. Video ভিডিও গেম খেলুন

9

উপরের @ হারমনকে প্রসারিত করে দেখে মনে হচ্ছে আপনি যদি প্রয়োজন হয় displayএবং printবিবৃতিগুলি একত্রিত করতে পারেন ... যদি আপনার প্রয়োজন হয়। বা, সম্ভবত আপনার সম্পূর্ণ এইচটিএমএলকে কেবল একটি স্ট্রিং হিসাবে ফর্ম্যাট করা এবং তারপরে প্রদর্শনটি ব্যবহার করা আরও সহজ। যেভাবেই হোক, দুর্দান্ত বৈশিষ্ট্য।

display(HTML('<h1>Hello, world!</h1>'))
print("Here's a link:")
display(HTML("<a href='http://www.google.com' target='_blank'>www.google.com</a>"))
print("some more printed text ...")
display(HTML('<p>Paragraph text here ...</p>'))

এরকম কিছু আউটপুট দেয়:


ওহে বিশ্ব!

এখানে একটি লিঙ্ক:

www.google.com

আরও কিছু মুদ্রিত পাঠ্য ...

অনুচ্ছেদে পাঠ্য এখানে ...


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.