为了账号安全,请及时绑定邮箱和手机立即绑定

使用pypandoc将HTML字符串转换为LaTex

使用pypandoc将HTML字符串转换为LaTex

鸿蒙传说 2021-03-10 14:11:26
我正在尝试使用pypandoc(Pandoc的python包装器)将HTML字符串转换为LaTex 。使用pypandoc覆盖文件可以正常工作:import pypandocinput = 'SomeFile.html'output = pypandoc.convert(input, 'tex')但是,如果我尝试传递一些字符串(如果您定义字符串格式,则根据pypandoc包索引应该是可能的),我得到了IOError: [Errno 63] File name too long::input = '''HTML-string'''output = pypandoc.convert(input, 'tex', format='html')即使我指定了文件,也不知何故format='html'。我还尝试通过使用StringIO模块来解决此问题,但未成功:import pypandocimport StringIOoutput = StringIO.StringIO()output.write('''HTML-string''')contents = output.getvalue()output.close()convertedOutput = pypandoc.convert(contents, 'tex', format='html')我是python的新手,非常感谢您的帮助或提示。提前致谢!
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

如果有人需要答案,这是一个使用subprocess模块的最小工作示例,该模块从读取输入stdin并在上输出转换后的字符串stdout。


# -*- coding: utf8 -*-


import subprocess

import os


PANDOC_PATH = r"path/to/pandoc"


def convert(text_to_convert):


    pandoc = subprocess.Popen([os.path.join(PANDOC_PATH, 'pandoc.exe'), '-f', 'html', '-t', 'latex'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)

    output, error = pandoc.communicate(text_to_convert.encode('utf-8'))

    converted_output = output


    return converted_output.decode()


查看完整回答
反对 回复 2021-03-31
?
繁花如伊

TA贡献2012条经验 获得超12个赞

如果检查pypandoc源,您会看到它convert只是在pandoc使用正确的输入和输出流的情况下运行进程。

pandoc找不到命令时发生错误。可能是您安装了pypandoc并且忘记了pandoc它本身。或者该命令不在您的外壳中PATH


查看完整回答
反对 回复 2021-03-31
  • 2 回答
  • 0 关注
  • 401 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号