在 python 中清理文本时保留新行

Keep new lines when cleaning text in python

我正在尝试制作一个 reddit 抓取工具。它工作正常但是当有表情符号时我会遇到问题。为了尝试解决这个问题,我在另一个问题上找到了这个函数。

def cleanText(text):
    valid_symbols = "?=-!@#$%^&*()_/\+;:%£$, "  # Symbols that are allowed
    new_text = ""
    for c in text:       # for each character in the text
        if c.isalnum() or c in valid_symbols:  # check if alphanumeric or a valid symbol
            new_text += c
    return new_text

这很适合清理文本,因此可以正确阅读,但我遇到的问题是我丢失了换行符。有什么办法可以告诉它换行没问题吗?

您可以将换行符 (\n) 添加到 valid_symbols,即更改

valid_symbols = "?=-!@#$%^&*()_/\+;:%£$, "

valid_symbols = "?=-!@#$%^&*()_/\+;:%£$, \n"

但请注意 newlines do differ between systems,因此可能有必要将其更改为

valid_symbols = "?=-!@#$%^&*()_/\+;:%£$, \r\n"

您也可以使用更通用的解决方案 - 允许空格,这意味着更改

if c.isalnum() or c in valid_symbols:

if c.isspace() or c.isalnum() or c in valid_symbols: