以这种方式使用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','')
)?
答案 0 :(得分: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 :(得分: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)