如何将数据插入到行中,而不在CSV中跳过行?在Python

问题描述:

这里是我的代码:如何将数据插入到行中,而不在CSV中跳过行?在Python

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

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

    lines.insert(pos, sk) 
    with open("files.csv","wb") as f: 
      for line in lines: 
       f.write(line+'\n') 

得到这个与C14l

的帮助,但有一个问题,当我尝试插入它跳过线,这是由“\ n”造成的,当我试图删除它时,它只是连接到位置中的字符串。有没有办法让它正确插入?

这里是我当前的代码插入 “菲利普” 的结果:

SASA

DA

菲利普
AF

FAF

AD

FAF

FAF

我希望它是:

SASA
DA
菲利普
AF
FAF
AD
FAF FAF

任何想法如何执行这没有跳过每行行?我在这里尝试了很多东西。找不到原因。我甚至试图在循环之后添加另一个f.write(line+'\n'),希望只在循环完成时添加新行。

使其:

for line in lines: 
    f.write(line) 
    f.write(line+'\n') 

在你的文件中的所有行有一个换行符。但是raw_input中的新行不包含换行符。通过你的代码,你可以为每一行添加一个换行符。这使现有线上的换行增加一倍,并创建空行。尝试只添加一个新行到新行: lines.insert(pos, sk + '\n') 并更改最后一行: f.write(line)

在的raw_input()的文档看看:

功能然后从读取一行输入,将其转换为字符串(剥离尾随换行符),然后返回该字符串。

找到了解决办法:

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)