鱼C论坛

 找回密码
 立即注册
查看: 2917|回复: 7

[已解决]怎么把^M删除而不增加空行?

[复制链接]
发表于 2023-2-17 16:16:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 blackantt 于 2023-2-17 16:20 编辑

怎么把左边的  ^M 删除,最后变成右边的样子。  而不增加空行。

m.jpg

cn_狮子国王.zip (1.01 KB, 下载次数: 2)

with open("./cn_狮子国王.vtt","r",encoding="utf-8") as f:

    lines = f.readlines()

    #写的方式打开文件

with open("./cn_狮子国王4.vtt","w",encoding="utf-8") as f_w:

    for line in lines:
        f_w.write(line)


        """

        if "\x0D" in line:

        #替换

            line = line.replace("\x0D","")
            #line = line.strip()

            f_w.write(line)
        else:
            f_w.write(line)

        """
最佳答案
2023-2-17 16:40:10
本帖最后由 isdkz 于 2023-2-17 16:43 编辑

import sys
import fileinput

for line in fileinput.input(files=('cn_狮子国王.vtt', ), mode='rb', inplace=True):
    if line[-2:] == b"\r\n":  
        line = line[:-2] + b"\n"
    sys.stdout.write(line)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-17 16:40:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2023-2-17 16:43 编辑

import sys
import fileinput

for line in fileinput.input(files=('cn_狮子国王.vtt', ), mode='rb', inplace=True):
    if line[-2:] == b"\r\n":  
        line = line[:-2] + b"\n"
    sys.stdout.write(line)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-17 17:01:26 | 显示全部楼层
本帖最后由 jackz007 于 2023-2-17 17:15 编辑

        文件是在 Linux 系统下生成,只要用 Windows 写字板打开这个文件,然后,直接保存就可以解决问题。
        也可以在 Linux 系统下用 unix2dos 把这个文件转换为适合 Windows 使用的格式,然后再拷贝到 Windows 系统下使用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-17 17:29:47 | 显示全部楼层
jackz007 发表于 2023-2-17 17:01
文件是在 Linux 系统下生成,只要用 Windows 写字板打开这个文件,然后,直接保存就可以解决问题。 ...

我原来的2种替换法,为啥,要么没有换行了,要么中间多个空行呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-17 17:31:22 | 显示全部楼层

我原来的2种替换法,为啥,要么没有换行了,要么中间多个空行呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-17 17:49:44 | 显示全部楼层
blackantt 发表于 2023-2-17 17:31
我原来的2种替换法,为啥,要么没有换行了,要么中间多个空行呢?

你看了这个就明白了,你以文本模式打开是读不出 \r 的,他把 \r 换成 \n 了,这就是你多了空行的原因

>>> with open('a.txt', 'w') as f:
...     f.write('\r')
...
1
>>> with open('a.txt', 'r') as f:
...     content = f.read()
...
>>> content
'\n'
>>> with open('a.txt', 'w') as f:
...     f.write('\r\r\n')
...
3
>>> with open('a.txt', 'r') as f:
...     content = f.read()
...
>>> content
'\n\n\n'
>>> with open('a.txt', 'rb') as f:
...     content = f.read()
...
>>> content
b'\r\r\r\n'
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-17 17:54:35 | 显示全部楼层
isdkz 发表于 2023-2-17 17:49
你看了这个就明白了,你以文本模式打开是读不出 \r 的,他把 \r 换成 \n 了,这就是你多了空行的原因

醍醐灌顶,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-21 07:32:27 | 显示全部楼层
本帖最后由 blackantt 于 2023-2-21 08:05 编辑

1111111111111111111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 13:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表