gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:30:53 25 4
gpt4 key购买 nike

我正在编写一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com