如何将数据插入到行中,而不在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)