st.write
Displays arguments in the app.
This is the Swiss Army knife of Streamlit commands: it does different things depending on what you throw at it. Unlike other Streamlit commands, st.write() has some unique properties:
- You can pass in multiple arguments, all of which will be displayed.
- Its behavior depends on the input type(s).
| Function signature[source] | |||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
st.write(*args, unsafe_allow_html=False) | |||||||||||||||||||||||||||||||||||||
| Parameters | |||||||||||||||||||||||||||||||||||||
*args (any) | One or many objects to display in the app.
| ||||||||||||||||||||||||||||||||||||
unsafe_allow_html (bool) | Whether to render HTML within *args. This only applies to strings or objects falling back on _repr_html_(). If this is False (default), any HTML tags found in body will be escaped and therefore treated as raw text. If this is True, any HTML expressions within body will be rendered. Adding custom HTML to your app impacts safety, styling, and maintainability. Note If you only want to insert HTML or CSS without Markdown text, we recommend using st.html instead. | ||||||||||||||||||||||||||||||||||||
| Returns | |||||||||||||||||||||||||||||||||||||
(None) | No description | ||||||||||||||||||||||||||||||||||||
Examples
Its basic use case is to draw Markdown-formatted text, whenever the input is a string:
import streamlit as st
st.write("Hello, *World!* :sunglasses:")
As mentioned earlier, st.write() also accepts other data formats, such as numbers, data frames, styled data frames, and assorted objects:
import streamlit as st
import pandas as pd
st.write(1234)
st.write(
pd.DataFrame(
{
"first column": [1, 2, 3, 4],
"second column": [10, 20, 30, 40],
}
)
)
Finally, you can pass in multiple arguments to do things like:
import streamlit as st
st.write("1 + 1 = ", 2)
st.write("Below is a DataFrame:", data_frame, "Above is a dataframe.")
Oh, one more thing: st.write accepts chart objects too! For example:
import altair as alt
import pandas as pd
import streamlit as st
from numpy.random import default_rng as rng
df = pd.DataFrame(rng(0).standard_normal((200, 3)), columns=["a", "b", "c"])
chart = (
alt.Chart(df)
.mark_circle()
.encode(x="a", y="b", size="c", color="c", tooltip=["a", "b", "c"])
)
st.write(chart)
Featured video
Learn what the st.write and magic commands are and how to use them.
Still have questions?
Our forums are full of helpful information and Streamlit experts.