在python中打开一个新行分隔文本文件
以这种方式使用python在python中打开一个新行分隔文本文件,python,string,csv,Python,String,Csv,以这种方式使用pythonopen内置函数: 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',''))?您可以使用该方法(无参数)删除字符串开头和结尾的任何空白: fo
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','')
)?您可以使用该方法(无参数)删除字符串开头和结尾的任何空白:
for r in rows:
print(r.strip())
如果只想删除换行符,可以将该字符作为参数传递给strip
:
for r in rows:
print(r.strip('\n'))
对于干净的解决方案,您可以使用生成器包装
打开
,如下所示:
def open_no_newlines(*args, **kwargs):
with open(*args, **kwargs) as f:
for line in f:
yield line.strip('\n')
for line in open_no_newlines('myfile.csv', mode='r'):
print(line)
然后,您可以像这样使用open\u no\u newlines
:
def open_no_newlines(*args, **kwargs):
with open(*args, **kwargs) as f:
for line in f:
yield line.strip('\n')
for line in open_no_newlines('myfile.csv', mode='r'):
print(line)
如果您试图读取和解析csv文件,Python的csv模块可能会更好:
import csv
reader = csv.reader(open('myfile.csv', 'r'))
for row in reader:
print(', '.join(row))
虽然您不能在此处更改读卡器的行终止符,但它以'\r'或'\n'结束一行,这适用于您的情况
同样,对于大多数情况,我认为您不需要手动解析csv文件。有几个问题/原因使csv模块对您更容易:包含分隔符的字段、包含换行符的字段、包含引号的字段等等。我的意思是有一些方法可以设置一些
打开的参数?您可以使用\r
替换换行符,或者使用打开的参数替换\r\n
,但你不能移除它们。查看@chrisz,这是您正在谈论的参数?open()
有一个名为newlines
的参数。我在前面链接了文档。open
有一个名为newline的参数,您可以在其中决定如何翻译/n
字符。将其设置为”
将返回未翻译的换行符。有关详细信息,请查看@VasilisG。这将使字符串中的换行符保留为\r\n
,此处没有任何内容表明行以CRLF终止。我认为@enneppi只是想删除LF。@enneppi,除非您作为学术练习手动读取和解析CSV文件,否则您可能想使用Python的。