我是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))
答案 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->垂直标签
\'->'
\“->”
还有其他
在字符串中,如果要使用'或',则可能会终止字符串。因此,分别使用\'或\“表示它们。