[英]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.