在csv中的行中的python多行字符串

时间:2016-07-03 19:29:09

标签: python csv

需要了解如何在python中处理这种情况 我正在使用python版本3.5.2

我有2天的蟒蛇技能。

我有一个csv文件,列中有一个多行字符串

示例:我有3列,第3列包含多行字符串

我有什么

column1     column2         column3

AppZok |    wendy1  | car one\n bike two\n jeep one

enter image description here

thrid列包含car'之间的空格。 '一个 和一个车之间的newlinechar \ nbike

以下是我期待输出的结果。

我需要什么

AppZok  wendy1  car     one
AppZok  wendy2  bike    two
AppZok  wendy3  jeep    one

enter image description here

这是我现在的代码,我只打印第3列。我知道这不是可能的方式,但我会通过寻找答案来不断更新代码

import csv
import re
import string

with open('data_post.csv','r') as csvfile:
    lines =csv.reader(csvfile,delimiter=',')
    out_file=open('multi_line_out.csv','w')
    for x in lines :
        #print (x[3])
        data_write=csv.writer(out_file,delimiter='\n')
        #final_data=x[1]
        data_write.writerow(x[2])

我得到的结果是

c
a
r

o
n
e
\
n

b
i
k
e

t
w
o
\
n

j
e
e
p

o
n
e

对此有任何帮助表示高度赞赏

2 个答案:

答案 0 :(得分:0)

以下示例代码可以将csv文件的一行扩展为多行。

line = ["AppZok", "wendy1", "car one\n bike two\n jeep one"]

def expand_column(line, col):
    new_rows = map(lambda p: p.strip().split(" "), line[col].split("\n"))
    return map(lambda row: line[:col] + row + line[col+1:], new_rows)

if __name__ == '__main__':
    print(list(expand_column(line, 2)))

我想从这里开始你应该能够自己做:)

答案 1 :(得分:0)

CSV中的换行符是有效字符,它们没有转义序列。您需要将这些文字\n字符串解释为分隔符。然后拆分值并构建行。

import csv
with open(inpath, 'r') as infile,\
     open(outpath, 'w', newline='') as outfile:
    reader = csv.reader(infile, delimiter=',')
    writer = csv.writer(outfile, delimiter=',')
    for line in reader:
        data = line[:-1]
        for last in line[-1].split(r'\n '):
            writer.writerow(data + last.split(' '))