簡體   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