繁体   English   中英

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

[英]python multiline string in a column to row in csv

需要一些关于如何在python中处理这种情况的想法我正在使用python版本3.5.2

我是2天的蟒蛇技能。

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

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

我有的

column1     column2         column3

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

在此输入图像描述

thrid列包含car''one和newlinechar之间的空格而不是car one'nbike

以下是我期待的输出。

我需要的

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

在此输入图像描述

这是我现在的代码,我只打印第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

对此的任何帮助都非常感谢

以下示例代码可以将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)))

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

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(' '))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM