【问题标题】:newline prints as a string换行符打印为字符串
【发布时间】:2018-08-19 14:30:14
【问题描述】:

我是 python 的初学者,我一直在学习本教程来解析网页中的数据,但我遇到了一个小问题......出于某种原因,每当我尝试在末尾添加换行符时一个变量(并将该变量添加到“记录”列表中),它将作为“\ n”本身写入文件(“newyorktimes_test.txt”),而不是实际的换行符。我知道这与“记录”列表有关,我只是不知道如何解决。任何帮助,将不胜感激。 (另外,不要介意我正在测试的网站,我只是在使用 它的格式。)

import requests
from bs4 import BeautifulSoup
import pandas as pd

r = requests.get('https://www.nytimes.com/interactive/2017/06/23/opinion/trumps-lies.html')
with open("newyorktimes_test.txt", "r+") as ny_times:
    soup = BeautifulSoup(r.text, 'html.parser')
    results = soup.find_all('span', attrs={'class':'short-desc'})
    records = []
    for result in results:
        date = str(result.find('strong').text[0:-1]) + ', 2017' + '\n'
        lie = str(result.contents[1][1:-2]) + '\n'
        explanation = str(result.contents[2].text) + '\n'
        url = str(result.find('a')['href']) + '\n'
        records.append((date, lie, explanation, url))

【问题讨论】:

  • 您实际上并没有在显示的代码中向文件写入任何内容。请发布重现您的错误的代码。
  • 此示例不会重现您描述的错误。请提供Minimal, Complete, Verifiable example.
  • 对不起大家!我忘了添加一些部分,我现在就做。
  • 到底出了什么问题? '\n' 是一个实际的换行符。”

标签: python python-requests newline file-writing


【解决方案1】:

你没有给我们足够的代码来找到问题,所以这是我的猜测:

不要在所有内容的末尾添加+ '\n'。这是没有人需要的垃圾,它占用空间并降低程序的可读性。当您实际需要输出结果时,print 函数将处理换行符(或者将有另一种非常方便的方法来添加它们)。保存数据没有换行符。

【讨论】:

  • 很抱歉,我忘了添加两行代码(我会马上做)。感谢您的建议!
【解决方案2】:

没有用于实际写入文件的代码。您在哪里以及如何编写文件?

您不必显式添加 \n 即可使用换行符。正如 lenik 提到的,您可以使用 print(arg,file=file_obj) 函数 (Python 3) from __future__ import print_function (Python 2) 和文件对象作为参数来写入文件。 print 将负责添加新行。或者,如果您绝对需要将字符串附加到列表中,您可以迭代或使用"\n".join(list),然后将其写入文件。

【讨论】:

    【解决方案3】:

    '\n' 字符称为转义序列字符。它代表一条新线。 如果一个字符串中有一个'\n',当你查看它时,它会有一个'\n',但是,当你打印它时,它会显示为一个换行符。这是一个例子:

    >>> a = '123\n456'
    >>> a
    '123\n456'
    >>> print(a)
    123
    456
    >>> 
    

    同样,还有其他转义序列字符。使用反斜杠是因为通常它们不能直接在字符串中表示。

    \t -> 制表符

    \s -> 空格

    \r -> 返回

    \v -> 垂直制表符

    \' -> '

    \" -> "

    等等。

    在字符串中,如果要使用'或",它可能会终止字符串。因此,您可以分别使用\'或\"来表示它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2019-06-18
      • 2018-09-02
      • 1970-01-01
      相关资源
      最近更新 更多