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