将文本插入行尾python

时间:2015-03-13 04:29:45

标签: python line editing

我想将一些文本附加到循环内的文本文件中特定行的末尾。 到目前为止,我有以下内容:

batch = ['1', '2', '3', '4', '5']
list = ['A', 'B', 'C']

for i in list:
    for j in batch:
        os.chdir("/" + i + "/folder_" + j + "/")

        file = "script.txt"
        MD = "TEXT"
        with open(file) as templist:
            templ = templist.read().splitlines()
        for line in templ:
            if line.startswith("YELLOW"):
                line += str(MD)

我是python的新手。你能帮忙吗?

编辑:我在(很棒)建议之后更新了我的剧本,但它仍然没有改变我的路线。

3 个答案:

答案 0 :(得分:1)

你有大部分是正确的,但正如你所指出的那样,字符串没有附加功能。在前面的代码中,您将字符串与+运算符组合在一起。你可以在这里做同样的事情。

batch = ['1', '2', '3', '4', '5']
list = ['A', 'B', 'C']

for i in list:
    for j in batch:
        os.chdir("/" + i + "/folder_" + j + "/")

        file = "script.txt"
        MD = "TEXT"
        with open(file) as templist:
            templ = templist.read().splitlines()
        for line in templ:
            if line.startswith("YELLOW"):
                line += str(MD)

答案 1 :(得分:1)

如果要修改文本文件,而不是将某些文本附加到内存中的python字符串,则可以使用标准库中的fileinput模块。

import fileinput

batch = ['1', '2', '3', '4', '5']
list = ['A', 'B', 'C']

for i in list:
    for j in batch:
        os.chdir("/" + i + "/folder_" + j + "/")

        file_name = "script.txt"
        MD = "TEXT"
        input_file = fileinput.input(file_name, inplace=1)
        for line in input_file:
            if line.startswith("YELLOW"):
                print line.strip() + str(MD)
            else:
                print line,
        input_file.close() # Strange how fileinput doesn't support context managers

答案 2 :(得分:0)

这将进行字符串连接:

line += str(MD)

这是一些more documentation on the operators,因为python支持赋值运算符。 a += b相当于:a = a + b。在python中,与其他一些语言一样,+=赋值运算符执行:

  

添加AND赋值运算符,它将右操作数添加到左操作数并将结果赋给左操作数