簡體   English   中英

Streamlit - 無法使用 st.write() 重復表情符號字符串

[英]Streamlit - Cannot repeat emoji string using st.write()

概括:

通常要在 Python 中重復一個字符串,您會使用 (string * n),其中 n = 重復次數。

在 Streamlit 中,您可以使用st.write()中相應的簡碼打印表情符號。

我已經能夠使用st.write(emoji1, emoji2, emoji3)成功打印表情符號,但是當我使用 (string *n) 重復表情符號字符串時,st.write 將簡碼打印為字符串而不是打印實際的表情符號.

這是 Streamlit 代碼的缺點,還是我遺漏了什么?

這是該應用程序的鏈接,因此您可以看到:

https://halfgingerbeard-30daysofstreamlit-emoji-frame-creator-bsodkg.streamlit.app/

嘗試/預期:

使用 Streamlit 接受的表情符號短代碼的數據框作為 df_emoji:

emoji1 = st.select_slider('Select emoji 1:', options = df_emoji['shortcodes'], value=':sunglasses:')
emoji2 = st.select_slider('Select emoji 2:', options = df_emoji['shortcodes'], value=':white_check_mark:')
emoji3 = st.select_slider('Select emoji 3:', options = df_emoji['shortcodes'], value=':coffee:')

e_columns = st.number_input('Select Number of Columns:',1,10,3)

st.write(emoji1, emoji2, emoji3) # this works successfully

st.write((emoji1, emoji2, emoji3) * e_columns)[:e_columns]) # this prints out the string values of the shortcodes instead of the actual emoji

我期待 e_columns 的長度重復連接的表情符號字符串,而不是字符串格式的每個簡碼

例如(與':太陽鏡:')

首先,你的最后一行有語法錯誤:

st.write((emoji1, emoji2, emoji3) * e_columns)[:e_columns])
#                                                         ^ unmatched

添加一個額外的開放括號(就在st.write之后:

st.write(((emoji1, emoji2, emoji3) * e_columns)[:e_columns])
#       ^ here

現在,在您第一次調用st.write()時,您將每個單獨的短代碼作為單獨的參數傳遞:

st.write(emoji1, emoji2, emoji3) # 3 parameters

但是,在它下面的第二個調用中,您向它傳遞了一個參數——一個元組:

st.write(((emoji1, emoji2, emoji3) * e_columns)[:e_columns]) # just one parameter

嘗試使用解包運算符*將每個表情符號分離成一個單獨的參數:

st.write(*((emoji1, emoji2, emoji3) * e_columns)[:e_columns])
#        ^

因此,如果e_columns是 5,例如,從 Python 的角度來看,實際的函數調用將是

st.write(emoji1, emoji2, emoji3, emoji1, emoji2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM