Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从单元格中删除html格式_Python_Html_Css_Pandas_Jupyter - Fatal编程技术网

Python 从单元格中删除html格式

Python 从单元格中删除html格式,python,html,css,pandas,jupyter,Python,Html,Css,Pandas,Jupyter,我有一个关于熊猫的数据框架: import pandas as pd df = pd.DataFrame({'CARGO': {53944: 'Driver', 57389: 'Driver', 60851: 'Driver', 64322: 'Driver', 67771: 'Driver'}, 'DATE': {53944: '05/2015', 57389: '06/2015', 60851: '07/2015', 64322: '08/2015', 6777

我有一个关于熊猫的数据框架:

import pandas as pd
df = pd.DataFrame({'CARGO': {53944: 'Driver',
57389: 'Driver',
  60851: 'Driver',
  64322: 'Driver',
  67771: 'Driver'},
 'DATE': {53944: '05/2015',
  57389: '06/2015',
  60851: '07/2015',
  64322: '08/2015',
  67771: '09/2015'},
 'DESCRICAO': {53944: '\\Salario R$ 788,00\nGratificacao Adicional R$ 251,00\nGRATIFICAÇÃO R$ 512,00\nINSS R$ -104,00',
  57389: '\\Salario R$ 788,00\nGratificacao Adicional R$ 251,00\nGRATIFICAÇÃO R$ 512,00\nINSS R$ -104,00',
  60851: '\\Salario R$ 788,00\n1/3 de Ferias R$ 516,95\nGratificacao Adicional R$ 251,00\nGRATIFICAÇÃO R$ 512,00\nINSS R$ -104,00',
  64322: '\\Salario R$ 788,00\nGratificacao Adicional R$ 251,00\nGRATIFICAÇÃO R$ 512,00\nINSS R$ -104,00',
  67771: '\\Salario R$ 788,00\nGratificacao Adicional R$ 225,90\nGRATIFICAÇÃO R$ 512,00\nINSS R$ -104,00'},
 'NOME': {53944: 'John Smith',
  57389: 'John Smith',
  60851: 'John Smith',
  64322: 'John Smith',
  67771: 'John Smith'}})
它呈现以下输出:

]

我如何设置pandas或Jupyter以便: 1.显示纯文本 2.接受换行符(“\n”)

编辑1: 我希望它是这样的:
问题的第一部分已解决

在markdown上,$表示mathjax上公式的开始。解决方案是在符号前插入反斜杠。以下是熊猫的片段:

def fix_dollar_sign(x):
   return re.sub('\$','\\$',x) # remember regex also uses dollar sign.
df['DESCRICAO'] = df['DESCRICAO'].apply(fix_dollar_sign)


我无法在单元格内创建新行。

您可以尝试这些方法,将新行字符替换为html换行标记

,并显式使用
.to_html()
html
进行显示,并将
max_colwidth
设置为
-1
,以便在转换为
html
时不会截断长行:

from IPython.core.display import HTML
pd.set_option('display.max_colwidth', -1)
df['DESCRICAO'] = df['DESCRICAO'].str.replace('\$', '\\$').str.replace('\n', '<br>')
HTML(df.to_html(escape=False))
从IPython.core.display导入HTML
pd.set_选项('display.max_colwidth',-1)
df['descripao']=df['descripao'].str.replace('\$','\\$').str.replace('\n','
')) HTML(df.to_HTML(escape=False))

扩展Psidom的优秀答案,您可以将其封装在可重用函数中。这样,您也不会永久更改数据帧:

from IPython.core.display import HTML

def convert_newlines(s):
    return s.replace('\n', '<br>') if isinstance(s, str) else s

def show_dataframe(df):
    return HTML(df.applymap(convert_newlines).to_html(escape=False)) 
从IPython.core.display导入HTML
def convert_换行符:
如果是INSTANCE(s,str),则返回s.replace('\n','
') def显示_数据帧(df): 返回HTML(df.applymap(convert_newlines).to_HTML(escape=False))
这打开了一些有趣的可能性,比如在dataframe html上突出显示一些文本。以下是我的尝试:

def highlight_text_on_descricao(df_rubrica = tab, texto='', cor='red'):
    def marca_texto(x,text,color):

        x, text, color, = str(x).upper(), str(text).upper(), str(color).lower()
        marcador_primario =  [m.start() for m in re.finditer(text , x)]
        if marcador_primario == []:
            return re.sub('\$','\\$',re.sub('\n','<br>',x))
        contexto = ''
        for item in marcador_primario:
            marcador_inicio = x[:item].rfind('\n')

            if marcador_inicio == -1:
                marcador_inicio = 0
            marcador_final = x.find("\n",item + 1) 
            if marcador_final == -1:
                contexto +=  "<font color='" + color + "'><b> " + x[marcador_inicio:]
            else:
                contexto +=  "<font color='" + color + "'><b> " + x[marcador_inicio:marcador_final
                            ] + '</font color></b>'
        marcador_do_primeiro_vermelho = x[:marcador_primario[0]].rfind('\n')
        if marcador_do_primeiro_vermelho == -1:
            descricao =  contexto + x[marcador_final:]
        else:
            descricao =  x[:marcador_do_primeiro_vermelho] + contexto + x[marcador_final:]
        return re.sub('\$','\\$',re.sub('\n','<br>',descricao))
    df_temp = df_rubrica
    df_temp = df_temp.rename(columns={'DESCRICAO':'DESCRICAO_LONG_TEXT_STRING____'})
    df_temp['DESCRICAO_LONG_TEXT_STRING____'] = df_temp['DESCRICAO_LONG_TEXT_STRING____'].apply(marca_texto,args=(texto,cor,))
    display(HTML(df_temp.to_html(escape=False)))

highlight_text_on_descricao(tab,'GRATIFICAÇÃO')
def突出显示描述上的文本(df\u rubrica=tab,texto='',cor='red'):
def marca_texto(x,文本,颜色):
x、 text,color,=str(x).upper(),str(text).upper(),str(color).lower()
marcador_primario=[m.start()表示re.finditer中的m(文本,x)]
如果marcador_primario=[]:
返回re.sub('\$','\\$',re.sub('\n','
',x)) contexto='' 对于marcador_primario中的项目: marcador_inicio=x[:项].rfind('\n') 如果marcador_inicio==-1: marcador_inicio=0 marcador_final=x.find(“\n”,项目+1) 如果marcador_final==-1: contexto+=“”+x[marcador_inicio:] 其他: contexto+=“”+x[马尔卡多•伊尼西奥:马尔卡多•决赛 ] + '' marcador_do_primeiro_vermelho=x[:marcador_primario[0]].rfind('\n') 如果marcador_do_primeiro_vermelho==-1: descripcao=contexto+x[marcador_final:] 其他: descripcao=x[:marcador\u do\u primeiro\u vermelho]+contexto+x[marcador\u final:] 返回re.sub('\$','\\$',re.sub('\n','
',descripcao)) df_temp=df_rubrica df_temp=df_temp.rename(列={'descripao':'descripao_LONG_TEXT_STRING_uuuuu'}) df_temp['descripao_LONG_TEXT_STRING__']=df_temp['descripao_LONG_TEXT_STRING__'].应用(marca_texto,args=(texto,cor,) 显示(HTML(从临时到HTML(escape=False))) 突出显示描述上的文字(选项卡“满足感”)
耶尔斯:


(顺便说一句,我从Henry Hammond()在custom.css上添加了一些东西,这就是为什么标题和索引是灰色的。

你能举个例子说明一下你希望如何格式化明文吗?我编辑了这个问题。反斜杠“\”在牢房的尽头发生了一次事故,但我没有改变它,这样会使事情复杂化。这是最好的答案!它解决了问题!非常感谢!