换行符打印为字符串

时间:2018-08-19 14:30:14

标签: python python-requests newline file-writing

我是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))

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

'\ n'字符称为转义序列字符。它代表了一条新线。 如果字符串中带有“ \ n”,则在查看时将带有“ \ n”,但是在打印时,它将显示为换行符。这是一个示例:

global $wpdb;

$variation_id = $wpdb->get_var( "
    SELECT p.ID FROM {$wpdb->prefix}posts as p
    INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
    INNER JOIN {$wpdb->prefix}postmeta as pm2 ON p.ID = pm2.post_id
    WHERE p.post_type LIKE 'product_variation'
    AND p.post_status LIKE 'publish'
    AND pm.meta_key LIKE 'attribute_pa_color'
    AND pm.meta_value = 'black'
    AND pm2.meta_key LIKE 'attribute_pa_waterproof'
    AND pm2.meta_value = 'yes'
");

// Output
echo $variation_id . '<br>';

类似地,还有其他转义序列字符。之所以使用反斜杠,是因为通常它们不能直接用字符串表示。

\ t->标签

\ s->空格

\ r->返回

\ v->垂直标签

\'->'

\“->”

还有其他

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