以这种方式使用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','')
)?
如果您正在尝试读取和解析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模块更容易:包含分隔符的字段,包含换行符的字段,包含引号字符的字段等。
你可以使用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)