Python代码中如何实现hard wrap?

soft warp = 软行换。也就是只是显示的时候换行了而已,并不将换行保存到文件中。

hard warp = 硬换行。一次换,终生换,在哪里打开、用什么打开都是那里换。


平常用 Atom 写 C,使用 atom-beautify package 在保存的时候,都会在 length-weigth = 80 处换行。

现在想让 python 代码也在页宽为 80 的地方换行 (加 \ 并换行),同样使用 atom-beautify package, 测试了 autopep8 和 yapf 都没有这个功能。

Atom 自带的也只有 soft warp。

Sublime 改了 user setting, 同样是 soft warp。

google 一圈,没人有同样的强迫症,特来求助......


Python代码中如何实现hard wrap?

25 回复

autopep8 --in-place --aggressive --aggressive <file_name> 也木有蛋蛋用。


在Python里实现hard wrap(硬换行)通常指的是在指定长度处强制插入换行符。最直接的方法是使用标准库的textwrap模块。

下面是一个简单的例子:

import textwrap

text = "这是一段很长的文本,我们需要在每行大约20个字符的位置进行硬换行。"
wrapped_text = textwrap.fill(text, width=20)
print(wrapped_text)

textwrap.fill()函数会返回一个新的字符串,其中的文本在达到指定的width时被换行。默认情况下,它会尝试在单词边界处断开,这通常就是你想要的。

如果你需要更严格地在精确的字符数处换行(即使会切断单词),可以结合使用textwrap.TextWrapper类:

import textwrap

text = "这是一段很长的文本,我们需要在每行精确的15个字符处切断,即使单词中间也会断开。"
wrapper = textwrap.TextWrapper(width=15, break_long_words=True)
wrapped_text = wrapper.fill(text)
print(wrapped_text)

设置break_long_words=True允许在长单词中间换行。

对于简单的需求,textwrap.fill()就够用了。

总结:用textwrap模块。

80 行的标准 实在是爱不动 intellij 似乎是在某些地方 自动加 \ 并换行的
我个人的喜好一般是超过 120 就重构代码 让他不超过 120 列 (加\并且换行感觉真的好丑-,-)



刚刚想起我有学生版 PyCharm,是了一下居然可以,开心爆了。

不过在我的小破电脑上软件加载起来有点慢…

所以还是想有什么办法让 atom 实现。

而且毕竟学生包一年后就到期了…

如果仍然有学生邮箱的话,Pycharm 可以继续申请激活的。



毕业之后就会被注销了…

如果有用 atom python coder,欢迎指出到底应该怎么办…

我现在无比尴尬的用 atom 写,然后用 PyCharm 去换行…

vscode 全选 格式化选中代码 美滋滋
*虽然原理不明,可能就是 autopep8,但是换行确实写入了文件。对应的“软换行”是“查看”-“切换(呈现)自动换行”。



你是来炫耀的……

老哥,pycharm 怎么弄成软换行呀

都是手动硬换的说



具体如何呢?

排除手动回车的方法……


vim -> :h formatexpr
PyCharm 社区版完全够用,免费

emmm…是 wrap 而非 warp…

用 \ 换行本来就是被社区抵制的风格 , autopep8 和 yapf 当然不可能这么干。 现在都是用括号焕发哪个的

人工换行比较好,自动换行有时候特别傻。



你不说我还没注意,一直觉得用的是 warp 弯曲之类的意思……

谢谢指出。

谢谢谢谢,之前一直以为弯曲拿个单词……

我的是硬来的硬换行,哈哈。

最后用括号焕发是什么意思啊?

主要是用自动换行学习姿势,毕竟看到把 [ 留在上一行,后面另起一行,这种事我无论如何也做不到……


类似这种么?
<br>foo = [<br> 'a',<br> 'b',<br> 'c'<br>]<br>

我觉得我更喜欢这种风格。而且好像看到的也多是这种风格。
估计看个人风格吧。我要求我这边的都不允许出现 \ 来换行的。

打错了, 焕发 -> 换行

https://www.python.org/dev/peps/pep-0008/


The preferred way of wrapping long lines is by using Python’s implied line continuation inside parentheses, brackets and braces. Long lines can be broken over multiple lines by wrapping expressions in parentheses. These should be used in preference to using a backslash for line continuation.

income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)

Google Python Style Guide:
https://google.github.io/styleguide/pyguide.html?showone=Line_length#Line_length

Do not use backslash line continuation.
Make use of Python’s implicit line joining inside parentheses, brackets and braces. If necessary, you can add an extra pair of parentheses around an expression.



类似于:

…split(“overable’>”)[

-1].split("blahblah…



我就是想遵照这个标准,本来想着从自动换行开始,一方面省事,一方面掌握规律。

我的 atom 貌似可以换行了,不过是正在输入中的代码,而不能对已有的代码文件进行换行处理。

回到顶部