首页 > 解决方案 > 将字符串附加到修改的行

问题描述

我将尝试分步执行此操作:

1-问题: 我必须重写一个损坏的 m3u 文件,它的行是:

#EXTINF123#, Title - Song # let's say for clarity sake that the n line

d:\music\title - song.mp3 # this would be the n+1 line

实际上它应该在哪里阅读(请注意,标题很重要)

#EXTINF123#, Title - Song
Title - Song.mp3

第一部分是删除包含 d:\music... 的行,然后这给出了必须在其自身下方重写的行,成为第 n+1 行

第一部分很简单,我得到了一个包含大量需要修改的行的文件。

#EXTINF123#, Title - Song
#EXTINF123#, Title1 - Song1...

所以我转向主要。问题

2- 暂定解决方案

import in_place

    with in_place.InPlace('Soothing.m3u') as file:
        for line in file:
            file.write(line)
            file.write(line[12:])

3-(新)问题:

这不会在第二(n + 1)行的末尾附加“.mp3”字符串,即:

#ext123#, Title - Song
Title - Song

4-(新)暂定解决方案

4.1 试图“添加”字符串,当然不行(那太容易了==>没有乐趣)

file.write(line[12:] + ".mp3")

当然,这将在下一行的开头添加扩展名

4.2 将光标“移动”到第n+1行的开头

with in_place.InPlace('Soothing.m3u') as file:
    for line in file:
        file.write(line)
        file.write(".mp3")
        file.seek(-5,1)
        file.write(line[10:])

这会返回一个错误

Traceback (most recent call last):
  File "erase.py", line 7, in <module>
    file.seek(-5,1)
AttributeError: 'InPlace' object has no attribute 'seek'

之前,您会问:尝试切换到 .txt 文件不会改变任何问题。当然,请随意使用文本文件对其进行测试。

4.3 加入我想我这里有东西。它不起作用,但如果你能帮助我理解为什么它会更有趣,我怀疑......当然我不会交出答案:)

import in_place

with in_place.InPlace('Soothing.m3u') as file:
    for line in file:
        file.write(line)
        a = line[12:]
        b = ".mp3"      
        c = a.join(b)
        file.write(c)

它只是将 b 发送到所有地方,给出如下内容:

#EXTINF:135,Title - Song
.Title - Song
mTitle - Song
pTitle - Song
3#EXTINF:194,Title1 - Song1

欢迎任何帮助。

操作系统:ubuntu 18.04

python 2.7 但可以使用 python 3.7

标签: pythonstringloopsappendin-place

解决方案


推荐阅读