使用python从刮取的网站中删除return-to-line

2024-10-02 16:27:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着刮一个网站这是目标div看起来像这样

                              <div class="entry-footer">
                                <p>
                                    <strong>Mots-clefs :</strong>
                                    A Gray State 4,
                                    A Gray State 3,
                                    A Gray State 2,                                     
                                </p>
                            </div>`

我正试着用这个方法把文本擦掉

^{pr2}$

我得到的结果 ! https://imgur.com/IzDSqG8 但我想让短信看起来像这样

Mots-clefs : A Gray State 4, A Gray State 3, A Gray State 2,

我想用空格代替retur to line


Tags: 方法https文本div目标网站classstrong
3条回答

要删除换行符,可以尝试使用\nnot/n,即:

Linux、macOS

tags[0].text.replace('\n',' ') 

窗口

^{pr2}$

或使用^{}

tags[0].text.strip()

换行符

通常称为行尾行尾EOL)、换行换行,是character encoding规范中的control character,如ASCII。它用来表示一个line of text的结束和一个新的开始。文本编辑器在按Enter key时设置此特殊字符。在


Representations in different character encoding specifications

  1. MulticsUnix和{a10}系统(LinuxmacOSFreeBSDAIXXenix,等等),BeOSAmigaRISC OS,以及其他{a19}

    -转义序列\n

  2. Atari TOSMicrosoft WindowsDOSMS-DOSPC DOS,等等),DECTOPS-10RT-11CP/MMP/MOS/2Symbian OSPalm OSAmstrad CPC,以及大多数其他早期非Unix和非IBM操作系统

    -转义序列\r\n


Unicode码

Unicode标准定义了许多字符,一致性应用程序应将其识别为行结束符:

LF:换行,U+000A
VT:Vertical TabU+000B
FF:Form FeedU+000C
CR:Carriage ReturnU+000D
CR+LFCRU+000D)后接LFU+000A
NEL:下一行,U+0085
LS:行分隔符,U+2028
PS:段落分隔符,U+2029

在打印输出字符串的实际表示形式时会发生什么:

>>> repr(tags[0].text)
'\n\nMots-clefs :\n    A Gray State 4,\n    A Gray State 3,\n    A Gray State 2,                                     \n  \n'

这里有一些问题,包括换行符(即\n,而不是{}),以及不需要的连续空格。但是,您可以使用^{}将这两个都替换为单个空格,以获得所需的结果:

^{pr2}$

输出:

Mots-clefs : A Gray State 4, A Gray State 3, A Gray State 2, 

或者没有正则表达式:

from bs4 import BeautifulSoup

content = """
 <div class="entry-footer">
    <p>
        <strong>Mots-clefs :</strong>
        A Gray State 4,
        A Gray State 3,
        A Gray State 2,                                     
    </p>
</div>
"""
soup = BeautifulSoup(content,"lxml")
for items in soup.select(".entry-footer p strong"):
    title = items.text
    data = ' '.join([' '.join(item.split()) for item in items.next_siblings])
    print(title,data)

输出:

^{pr2}$

相关问题 更多 >