运行后如何在命令提示符下删除\ r \ n?

时间:2019-05-04 14:12:37

标签: python scrapy

每当我运行代码时。它给我\r\n留空格。我使用了剥离功能,但是没有用。如何解决这个问题?这是链接:https://ibb.co/VtVV2fb \

import scrapy
from .. items import FetchingItem

class SiteFetching(scrapy.Spider):
    name = 'Site'
    start_urls = ['https://www.rev.com/freelancers']
    transcription_page = 'https://www.rev.com/freelancers/transcription'

    def parse(self, response):
    items = {
    'Heading': response.css('#sign-up::text').extract(),
    'Earn_steps': response.css('.pb2 .lh-copy::text , .mb1::text , .mb3 .lh-copy::text').extract(), 
    }

    yield response.follow(self.transcription_page, self.trans_faqs, meta={'items':items})

    def trans_faqs(self, response):
    items = response.meta['items']
    names = {
    'name1': 'FAQ1',
    'name2': 'FAQ2', 
    }

    finder = {
    'find1': '#whatentailed p::text , #whatentailed .mr3::text',
    'find2': '#requirements p::text , #requirements .mr3::text',
    }

    for name, find in zip(names.values(), finder.values()):
        items[name] = response.css(find.strip()).extract()
    yield items

1 个答案:

答案 0 :(得分:2)

strip()只能在字符串末尾删除\r\n,而不能在字符串末尾删除。如果文本中有\r\n,请使用text = text.replace(\r\n', '')

似乎您在\r\n创建的列表中获得了extract(),因此您必须使用列表理解来从列表中的每个元素中删除

data = response.css(find).extract()
data = [x.replace('\r\n', '').strip() for x in data]
items[name] = data

编辑:删除句子之间的空格和\r\n,您可以split('\r\n')创建带有句子的列表。那么您可以strip()每个句子。然后,您可以' '.join()将所有句子都返回一个字符串。

text = 'Sentence 1\r\n    Sentence 2'

data = text.split('\r\n')
data = [x.strip() for x in data]
text = ' '.join(data)

print(text)

同一行

text = 'Sentence 1\r\n    Sentence 2'

text = ' '.join(x.strip() for x in text.split('\r\n'))

print(text)

与模块re

相同
import re

text = 'Sentence 1\r\n    Sentence 2'

text = re.sub('\r\n\s+', ' ', text)

print(text)

for name, find in zip(names.values(), finder.values()):
    data = response.css(find.strip()).extract()
    data = [re.sub('\r\n\s+', ' ', text) for text in data]
    items[name] = data