Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中打开一个新行分隔文本文件_Python_String_Csv - Fatal编程技术网

在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

以这种方式使用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','')
)?

您可以使用该方法(无参数)删除字符串开头和结尾的任何空白:

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的。