Python 读取列中带有换行符的csv文件

Python 读取列中带有换行符的csv文件,python,python-3.x,csv,Python,Python 3.x,Csv,我有一个列中有换行符('\n')的csv文件。 行由回车符+换行符分隔(\r\n) 分隔符是“;”并引用了所有 我想用空格替换列中的换行符('\n') 我已经尝试读取整个文件,并使用split('\r\n')获取行,但这不起作用 with open(r’d:\my_file.csv’,’r’) as fi: data = fi.read() lines = data.split(‘\r\n’) for line in lines: with open(r

我有一个列中有换行符('\n')的csv文件。 行由回车符+换行符分隔(\r\n) 分隔符是“;”并引用了所有

我想用空格替换列中的换行符('\n')

我已经尝试读取整个文件,并使用split('\r\n')获取行,但这不起作用

with open(r’d:\my_file.csv’,’r’) as fi:
    data = fi.read()
    lines = data.split(‘\r\n’)

    for line in lines:
        with open(r’d:\my_file.csv’,’a’) as fo:
        fo.write(line.replace(‘\n’, ‘ ’)

import csv

    with open(r’d:\my_file.csv’, ‘r’, newline=‘\r\n’) as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=‘;’,quotechar='"')
        for row in csv_reader:
           n_row = row.replace(‘\n’, ‘ ‘)
    …
是否可以逐行读取文件并使用“\r\n”作为新行指示符


非常感谢您的帮助

您的代码包含怪异的
。。您还可以尝试对csv中的行使用
.replace()
,该行由
提供给您,读卡器:
。该
是列的列表-您不能直接调用
replace()
on。您需要替换此行每列内的换行符

--

你试着自己去读这个文件——引用它是很困难的。再次使用读取和存储csv要容易得多:

编写演示文件:

import csv

t = [["a", 2, "c\nd", 4], ["aa", "bb", "cc", "dd"], ["aaa", "bbb", "ccc", "ddd"]]

# using the default seperator of: ',' - use delimiter=';' to change it
with open( "d.txt", "w", newline="") as f:
    w = csv.writer(f, quotechar='"', quoting=csv.QUOTE_ALL)
    w.writerows(t)

# print files content
print(open("d.txt").read())
with open( "d_mod.txt", "w", newline="") as f:
    w = csv.writer(f, quotechar='"', quoting=csv.QUOTE_ALL)
    w.writerows(data)   # modified data

# print new files content
print(open("d_mod.txt").read())
文件内容:

"a","2","c
d","4"
"aa","bb","cc","dd"
"aaa","bbb","ccc","ddd"
读取演示文件,处理数据并存储在列表中

data = []
with open("d.txt") as f:
    r = csv.reader(f, quotechar='"')
    for row in r:
        data.append( [x.replace("\n"," ") for x in row] )

print(t)
print(data)
输出:

# original data
[['a', 2, 'c\nd', 4], ['aa', 'bb', 'cc', 'dd'], ['aaa', 'bbb', 'ccc', 'ddd']]

# parsed and replaced data (some numbers are now strings, \n is replaced)
[['a', '2', 'c d', '4'], ['aa', 'bb', 'cc', 'dd'], ['aaa', 'bbb', 'ccc', 'ddd']]    
将修改后的数据写回新文件:

import csv

t = [["a", 2, "c\nd", 4], ["aa", "bb", "cc", "dd"], ["aaa", "bbb", "ccc", "ddd"]]

# using the default seperator of: ',' - use delimiter=';' to change it
with open( "d.txt", "w", newline="") as f:
    w = csv.writer(f, quotechar='"', quoting=csv.QUOTE_ALL)
    w.writerows(t)

# print files content
print(open("d.txt").read())
with open( "d_mod.txt", "w", newline="") as f:
    w = csv.writer(f, quotechar='"', quoting=csv.QUOTE_ALL)
    w.writerows(data)   # modified data

# print new files content
print(open("d_mod.txt").read())
修改的文件内容:

"a","2","c d","4"
"aa","bb","cc","dd"
"aaa","bbb","ccc","ddd"

如果您添加不起作用的代码,会更容易提供帮助。@PatrickArtner:我已经尝试过了,但是由于行的原因,它会给我一个错误。