需要了解如何在python中处理这种情况 我正在使用python版本3.5.2
我有2天的蟒蛇技能。
我有一个csv文件,列中有一个多行字符串
示例:我有3列,第3列包含多行字符串
我有什么
column1 column2 column3
AppZok | wendy1 | car one\n bike two\n jeep one
thrid列包含car'之间的空格。 '一个 和一个车之间的newlinechar \ 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
对此有任何帮助表示高度赞赏
答案 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(' '))