python - 用于打印输出的合理 python 源代码换行

标签 python latex syntax-highlighting code-formatting pygments

我正在编写一个 latex 文档,需要排版大量的 python 源代码。我正在使用pygments (python 模块,而不是在线演示)将这个 python 封装在 latex 中,除了长单行的情况外,它工作得很好 - 它只是在页面之外继续。我可以手动换行这些行,只是这对我来说似乎不是那么优雅的解决方案,而且我更喜欢花时间思考疯狂的自动化解决方案而不是重复性任务。

我想要的是某种处理 python 源代码的方法,将行换行到一定的最大字符长度,同时保留功能。我玩过一些Python,最接近的是在最大行长度之前的最后一个空格中插入 \\\n - 但是当然,如​​果这最终以字符串形式结束和评论,事情出了问题。坦率地说,我不知道如何解决这个问题。

那么,是否有人知道可以处理源代码的模块或工具,这样任何行都不会超过一定的长度 - 或者至少是开始编写类似代码的好方法?

最佳答案

您可能想稍微扩展当前的方法,但使用 tokenize标准库中的模块来确定换行符的位置。这样您就可以看到源代码的实际标记(COMMENT、STRING 等),而不仅仅是空格分隔的单词。

以下是 tokenize 功能的一个简短示例:

>>> from cStringIO import StringIO
>>> from tokenize import tokenize
>>> 
>>> python_code = '''
... def foo(): # This is a comment
...     print 'foo'
... '''
>>> 
>>> fp = StringIO(python_code)
>>> 
>>> tokenize(fp.readline)
1,0-1,1:    NL  '\n'
2,0-2,3:    NAME    'def'
2,4-2,7:    NAME    'foo'
2,7-2,8:    OP  '('
2,8-2,9:    OP  ')'
2,9-2,10:   OP  ':'
2,11-2,30:  COMMENT '# This is a comment'
2,30-2,31:  NEWLINE '\n'
3,0-3,4:    INDENT  '    '
3,4-3,9:    NAME    'print'
3,10-3,15:  STRING  "'foo'"
3,15-3,16:  NEWLINE '\n'
4,0-4,0:    DEDENT  ''
4,0-4,0:    ENDMARKER   ''

关于python - 用于打印输出的合理 python 源代码换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1035721/

相关文章:

latex - (La)TeX Base 10 定点运算

r - 停止表格从观星者的页面末尾消失

.net - 如何在 Visual Studio 中为 .feature 文件高亮显示 Gherkin 语法?

angularjs - Visual Studio HTML 文件中的 Angular Syntax Highlighter

python - 正则表达式匹配 django block templatetag

python - C++ 相当于 Python 的 __init__

python - 将 XML 解析为 Dataframe 时生成重复值(填充?)

python - os.path.join() 是否符合预期行为

Latex --- 有没有办法从右边距(向左移动)移动编号一个制表符空间的方程式?

syntax-highlighting - Pandoc:可用的语法荧光笔有哪些?