Как удалить \ r \ n в командной строке после запуска? - PullRequest
0 голосов
/ 04 мая 2019

Всякий раз, когда я запускаю код.это дает мне \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 Ответ

2 голосов
/ 04 мая 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...