将csv列中的占位符替换为输出文件中的换行符(使用python)

时间:2019-03-03 16:50:40

标签: python

我必须将csv文件一列中包含的代码写入新文件(每一行中)。 当然,这些代码实际上应该包含换行符,因此我插入了一个占位符(@),在输出新文件时我想将其转换为换行符。我试图在代码中的各个位置进行替换,但是没有任何效果。我什至没有用\ r \ n字符串替换@。在我的上一个版本(如下)中,python只是很高兴地继续输出@:

import csv
import codecs


tablelist=('gz_categoria', 'gz_cabildo')
counter=0
for item in tablelist:
    with open('C:/Hgis/'+"%s" % (item)+'.csv', 'r') as csvFile:
        reader = csv.reader(csvFile)
        for row in reader:
            row[1].replace('\r\n', '\\r\n')
            row[1].replace('@', '\\r\n')
            newpage = codecs.open ('C:/Hgis/db/'+"%s" % (item)+''+str(counter)+'.txt',encoding='utf-8', mode='w+')
            newpage.write(row[1].decode('UTF-8'))
            counter = counter+1
            newpage.close()

这是csv的前两行:

1,----数据输入类别---- @ ID:1000135categoria:Ciudad @ subcategoria:Ciudad @ es parte de:@Desde:1539 @ Hasta:9999 @ Desde_fuzzy:确切@Hasta_fuzzy:end @ --- -,1000135,Patzcuaro,1539,exact,9999,end,Ciudad,Ciudad,gerhardNE,None,No,-2

2,----数据输入类别-@ ID:1000136类别:Pueblo @ subcategoria:Pueblo de indios @ es parte de:@Desde:1111 @ Hasta:9999 @ Desde_fuzzy:start @ Hasta_fuzzy:end @- ---,1000136,Puruandiro,1111,start,9999,end,Pueblo,Pueblo de indios,tanck,None,No,0

文件1中所需的输出:

----数据输入类别----

ID:1000135

类别:Ciudad

子类别:Ciudad

双方当事人:

目的:1539

哈斯塔:9999

Desde_fuzzy:准确

Hasta_fuzzy:结束


1 个答案:

答案 0 :(得分:0)

实际上,正如@snakecharmerb所评论的那样,该错误并未为结果分配变量:

以下代码可产生所需的结果:

tablelist=('gz_categoria', 'gz_cabildo')
counter=0
for item in tablelist:
    with open('C:/Hgis/'+"%s" % (item)+'.csv', 'r') as csvFile:
        reader = csv.reader(csvFile)
        for row in reader:
            row[1].replace('@', '\r\n')
            newpage = codecs.open ('C:/Hgis/db/'+"%s" % (item)+''+str(counter)+'.txt',encoding='utf-8', mode='w+')
            newpage.write(row[1].decode('UTF-8'))
            counter = counter+1
            newpage.close()