在CSV文件中插入特定行,而不是替换Python中的其他值

时间:2017-03-05 09:23:08

标签: python

我想通过String和Number of Position在某一行中插入一个字符串 从:

Str1
Str2
Str3

Str1
Str2
Inserted String
Str3

我做了很多研究,有些取代了价值,所以没有用,任何想法如何去做?从python开始,我尝试从C ++中翻译我的代码,但是用这种语言很难做到这一点。

到目前为止我的代码:

sk= raw_input("\nWhat SKU would you like to insert?: ")
pos= int(raw_input("\nAt what row?: "))


f = open("files.csv","r")
lines = f.readlines()
f.close()
print(row[pos])
f = open("files.csv","w")

for line in lines:
    if line.startswith(line[pos]):
        line[pos] = sk
f.close()

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

如果它是一个逐行文本文件,那么这将是一种方法。

sk= raw_input("\nWhat SKU would you like to insert?: ")
pos= int(raw_input("\nAt what row?: "))

with open("files.csv","r") as f:
    lines = f.readlines()

lines.insert(pos, sk + '\n')

with open("files.csv","w") as f:
    for line in lines:
        f.write(line)

使用with始终关闭文件,即使出现错误或其他意外事件(with statement manages contexts,也不仅仅是文件处理程序)。然后,只需将项目插入列表并将列表写回。

如果您不想修改内存中的列表,可以在第二个for循环中use the built-in enumerate

with open("files.csv","w") as f:
    for i, line in enumerate(lines):
        if i == pos:
            f.write(sk + '\n')
        f.write(line)

但如果您想以某种方式操纵CSV数据,可以just import csv