CsjIu 发表于 2020-6-16 06:42:58

Mac系统无法自动换行

本帖最后由 CsjIu 于 2020-6-16 07:51 编辑

<<< f =open('/Users/CBA/聊天记录换行测试.txt')
<<<f.seek(0,0)
<<<for each_line in f:
            print(each_line)
就这样的,读取文本后不能自动换行,请教一下是哪里的问题?

Twilight6 发表于 2020-6-16 07:02:20



当你打开个txt文件对象,对这个文件对象直接进行遍历循环,就是每次都以一行为单位来读取文本内容的

所以不是无法换行,而是你的代码错误,而且如果你是以只读方式打开,默认的文件指针就为文件开始位置,不需要我们重新 seek 条件到开始位置

你的 f 只是个路径,而不是打开文件,我们打开文件要用到 open 函数,正确代码如下:
f = open('/Users/CBA/聊天记录换行测试.txt')
for each_line in f:
    print(each_line)


而且你print打错了,P是小写的




xiaosi4081 发表于 2020-6-16 08:00:00

本帖最后由 xiaosi4081 于 2020-6-16 08:01 编辑

f =open('/Users/CBA/聊天记录换行测试.txt')
for each_line in f:
            print(each_line)
不要偷懒,一行一行的输入

CsjIu 发表于 2020-6-16 08:28:08

Twilight6 发表于 2020-6-16 07:02
当你打开个txt文件对象,对这个文件对象直接进行遍历循环,就是每次都以一行为单位来读取文本内容的

...

       谢谢前辈的指正,我第一次发贴太不严谨了,在备忘录随意打的,忘记核对。我刚核对了一下交互模式的记录,这些问题是没错,标点符号什么的也都确认过了。
       所以在以上列出的都没问题后,还尝试了在要读取的文本里的对话,各在句子加入单引号,还在加了引号的句子末尾加上\n,也尝试过\r,见笑了。
       最后只能自己先在要读取的文本里在每句对话后用回车,打出一个换行来。而后在交互模式里读取出来的才会是每句对话隔了个换行,还多隔了一个空白行。
      例如以前文本里的是:
‘abc:5688886444\n’,’efg:88754323\n’,abc:66643899\n’,这样的格式,那在交互模式读取出来也是一样格式,就是没换行的。
如果文本里的对话修改成以下换行的格式话(貌似行间距没这么大),这么大的行间距就是我读取文本后的样子了,就是每个对话间有了换行,然后每行之间还多了空行
‘abc:5688886444\n’,’
efg:88754323\n’,
abc:66643899\n’,

Twilight6 发表于 2020-6-16 08:31:07

本帖最后由 Twilight6 于 2020-6-16 09:42 编辑

CsjIu 发表于 2020-6-16 08:28
谢谢前辈的指正,我第一次发贴太不严谨了,在备忘录随意打的,忘记核对。我刚核对了一下交互模式 ...


因为第二种实际 print 函数 默认有个 end 参数为换行符号,加上文本中自带的的换行导致换行两次出现空行

实际上文本内的换行已经自带了 \n 了 你再次添加的 \n 会被 Python 自动转义 ,也就是 Python 会自动帮你输出内容时候加上一个 \ 转义字符 导致打印出 \n 而没有 换行效果
abc:5688886444
efg:88754323
abc:66643899

CsjIu 发表于 2020-6-16 08:33:13

本帖最后由 CsjIu 于 2020-6-16 08:35 编辑

Twilight6 发表于 2020-6-16 08:31
因为第二种实际上你你多添加了换行符号导致你会出现空行,因为你自行添加了 \n

实际上文本内的换行 ...

没加的话,就不会自动换行啊,我最开始就是没添加的,然后就算有添加换行符,我如果调成对话后,隔个逗号就接着对话的格式,它读取出来也不会换行

Twilight6 发表于 2020-6-16 08:33:37

CsjIu 发表于 2020-6-16 08:28
谢谢前辈的指正,我第一次发贴太不严谨了,在备忘录随意打的,忘记核对。我刚核对了一下交互模式 ...

你可以尝试着吧文本 新建为楼上的内容

然后进行下面的代码:
f = open('/Users/CBA/聊天记录换行测试.txt')
content = []
for each_line in f:
    content.append(each_line)
print(content)
此时你就会发现 列表里的每一个字符串结尾都是一个 \n 换行符

打印的时候会将 \n 打印换行,所以你看不见这些 转义字符

Twilight6 发表于 2020-6-16 08:37:26

CsjIu 发表于 2020-6-16 08:33
没加的话,就不会自动换行啊,我最开始就是没添加的,然后就算有添加换行符,我如果调成对话后,隔个逗 ...


如图:

会发现每行字符串自带了 \n而 最后一个没带 是因为最后行我文本内没换行

CsjIu 发表于 2020-6-16 08:45:46

Twilight6 发表于 2020-6-16 08:33
你可以尝试着吧文本 新建为楼上的内容

然后进行下面的代码:


       的确是这样。其实我现在的文本格式分为三段对话的,中间用=号分隔开了,这个你也知道。我第一段对话加了换行符,但是没有把对话用回车换行,第二段和第三段没有加换行符,但是用回车换行了。结果读取出来的只有二 三段有换行。

Twilight6 发表于 2020-6-16 08:45:46

CsjIu 发表于 2020-6-16 08:33
没加的话,就不会自动换行啊,我最开始就是没添加的,然后就算有添加换行符,我如果调成对话后,隔个逗 ...

5L 描述有误,已重新修改

Twilight6 发表于 2020-6-16 08:47:51

CsjIu 发表于 2020-6-16 08:45
的确是这样。其实我现在的文本格式分为三段对话的,中间用=号分隔开了,这个你也知道。我第一段对 ...

我第一段对话加了换行符,但是没有把对话用回车换行,第二段和第三段没有加换行符,但是用回车换行了。结果读取出来的只有二 三段有换行。

那你的文本内容是这样的吗?
abc:5688886444\nefg:88754323
abc:66643899

CsjIu 发表于 2020-6-16 09:05:27

本帖最后由 CsjIu 于 2020-6-16 09:06 编辑

CsjIu 发表于 2020-6-16 09:08:44

本帖最后由 CsjIu 于 2020-6-16 09:23 编辑

Twilight6 发表于 2020-6-16 08:47
那你的文本内容是这样的吗?

iu:5363636356363636436436)\n','csj:7367657654757587856,iu:trtrwtwtw,6356456346534\n',sj:7646764765745fgfdds56456\n',iu:在4353463636
sj:'fgfsgsfgsdgs水 ^ ^)。i

=================================================================================
iu:453676376767367,
sj:47437643736473647;
iu:64464565465隘,6546546。
sj:56256536436,
iu:453634563456354653465。
=================================================================================
iu:564563457676了。
iu:47346734743734734734。
sj:7367367373743734734,
iu:同54345747476373647。
sj:我4367467,
iu:6747473人\
sj:他43746747346,

CsjIu 发表于 2020-6-16 09:09:49

Twilight6 发表于 2020-6-16 08:47
那你的文本内容是这样的吗?

原来是以上这样的格式

Twilight6 发表于 2020-6-16 09:37:41

CsjIu 发表于 2020-6-16 09:09
原来是以上这样的格式



我知道了 ,是我混淆了,在文本中直接添加 \n 并不会起到换行的效果

当你在 IDLE 界面直接进行进行读取文件时候,而不是打印这个时候会显示文本全部内容而且不是换行的那种

而你会发现你自己写在文本中的换行符前面多了一个\是因为Python 自动帮你转义了 导致打印出了 \n 而不是换行效果

CsjIu 发表于 2020-6-16 11:01:08

Twilight6 发表于 2020-6-16 09:37
我知道了 ,是我混淆了,在文本中直接添加 \n 并不会起到换行的效果

当你在 IDLE 界面直接进行进 ...

原来啊,那我之前看视频的时候,应该是他已经先把文本都编辑好了。多谢

Twilight6 发表于 2020-6-16 11:01:59

CsjIu 发表于 2020-6-16 11:01
原来啊,那我之前看视频的时候,应该是他已经先把文本都编辑好了。多谢

没事~ 加油!

CsjIu 发表于 2020-6-16 11:04:05

对了,我要把整段代码左移,是要按什么键吗?我知道右移是tab,tab+shift也是右移。

CsjIu 发表于 2020-6-16 11:12:08

Twilight6 发表于 2020-6-16 11:01
没事~ 加油!


18楼CsjIu 楼主
7 分钟前
对了,我要把整段代码左移,是要按什么键吗?我知道右移是tab,tab+shift也是右移。

Twilight6 发表于 2020-6-16 11:17:03

CsjIu 发表于 2020-6-16 11:12
18楼CsjIu 楼主
7 分钟前
对了,我要把整段代码左移,是要按什么键吗?我知道右移是tab,tab+shift也 ...

我记得是 Ctrl + [ 你试试Pycharm 才是 Shift + Tab
页: [1] 2
查看完整版本: Mac系统无法自动换行