在python中打开一个新行分隔的文本文件

问题描述 投票:1回答:2

以这种方式使用python open内置函数:

with open('myfile.csv', mode='r') as rows:
    for r in rows:
        print(r.__repr__())

我获得了这个输出

'col1,col2,col3\n'
'fst,snd,trd\n'
'1,2,3\n'

我不想要\n角色。你知道一些有效的方法来删除这个字符(代替明显的r.replace('\n',''))?

python string csv
2个回答
2
投票

如果您正在尝试读取和解析csv文件,Python的csv模块可能会提供更好的服务:

import csv
reader = csv.reader(open('myfile.csv', 'r'))
for row in reader:
    print(', '.join(row))

虽然您无法在此处更改读取器的行终止符,但它会以'\ r'或'\ n'结尾,这适用于您的情况。

https://docs.python.org/3/library/csv.html#csv.Dialect.lineterminator

同样,对于大多数情况,我认为您不需要手动解析csv文件。有一些问题/原因使csv模块更容易:包含分隔符的字段,包含换行符的字段,包含引号字符的字段等。


1
投票

你可以使用string.strip(),它(没有参数)从字符串的开头和结尾删除任何空格:

for r in rows:
    print(r.strip())

如果您只想删除换行符,可以将该字符作为参数传递给strip

for r in rows:
    print(r.strip('\n'))

对于一个干净的解决方案,您可以使用生成器来包装open,如下所示:

def open_no_newlines(*args, **kwargs):
    with open(*args, **kwargs) as f:
        for line in f:
            yield line.strip('\n')

然后你可以像这样使用open_no_newlines

for line in open_no_newlines('myfile.csv', mode='r'):
    print(line)
© www.soinside.com 2019 - 2024. All rights reserved.