【问题标题】:after writing text in csv, opening it doesn't read the '\n' char [duplicate]在 csv 中写入文本后,打开它不会读取 '\n' 字符 [重复]
【发布时间】:2020-08-26 17:03:13
【问题描述】:

我创建了一个 csv 文件,我在其中放置了一些歌曲的歌词,使用这个:

with io.open('songs.csv', 'a+',encoding='utf-8') as file:
    writer = csv.writer(file , dialect='excel')
    writer.writerow(input_row)

其中 input_row 是一个包含 [艺术家、歌词] 的列表

现在,当我打开我的 csv 文件时,我注意到到处都是 '\n''\r'

例如:

原始文本:

I went walking in the garden
I was tripping on snakes
And I ain't asking for your loving
I'm just asking what your love is gonna take

读取 csv 后来自 pandas 数据帧的文本:

"\r\n\r\r\nI went walking in the garden\r\nI was tripping on snakes\r\nAnd I ain't asking for your loving\r\nI'm just asking what your love is gonna take\r\n\r\n

(顺便说一句,我正在使用 Pycharm 并且在数据集的概览中,那些转义字符是不可见的,所以我附上了一些文字。)

我正在使用清理列

    data['lyrics'] = data['lyrics'].replace(r'\\[n]', ' ',regex = True)
    data['lyrics'] = data['lyrics'].replace(r'\\[r]', ' ', regex=True)

但是当我打印文本时,什么都没有改变。

我做错了什么还是不是问题,我可以忽略它??

【问题讨论】:

  • @Błotosmętek 不确定,现在问题是:为什么我写的行代码没有删除那些 \n 和 \r?

标签: python pandas csv newline carriage-return


【解决方案1】:

显然 Pandas 无法正确猜测行尾的类型(Unix/Linux - \n,Windows - \r\n)。试试这里的建议:Adding a line-terminator in pandas ends up adding another \r 将文件对象传递给read_csv 而不是传递文件名的解决方案:

with open('songs.csv', 'r',encoding='utf-8') as file:
    df = pandas.read_csv(file)

【讨论】:

    【解决方案2】:

    试试这个

    data['lyrics'] = data['lyrics'].str.strip()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多