2017-01-15 28 views
1

Я хочу скопировать какой-то богатый текст, изменить его исходный код (сменив некоторые теги и текст, используя регулярное выражение и/или beautifulsoup) и отправить его обратно в буфер обмена. Я ищу самый простой способ сделать это.python 3.6 windows: извлечение буфера обмена CF_HTML-формат

Я попробовал win32clipboard, но это doesn't support the CF_HTML format (windows clipboard contains many formats).

Итак, я ищу модуль, который мог бы помочь мне получить этот формат: , если формат буфера обмена CF_HTML содержит HTML, сохранит его в этой переменной, выполните некоторую операцию, а затем отправьте ее обратно. (Необязательно: и делайте другие вещи в других форматах буфера обмена)

Вот эквивалент Linux, который я ищу. Он извлекает исходный HTML, когда есть какая-то в буфер обмена (source)

#!/usr/bin/env python 
import gtk 
print (gtk.Clipboard().wait_for_contents('text/html')).data 

Edit1: Существует работа вокруг с помощью pywin32 this script. Но есть ли модуль, способный сделать это напрямую (если CF_HTML содержит данные, получить их и отправить обратно)?

ответ

0

Решение Edit1 на самом деле является лучшим.

  1. поставил скрипт выше (HtmlClipboard.py) в папке модуля питон: C: \ Users \ ххх \ AppData \ Local \ Programs \ Python \ Python36 \ Lib \ сайт-пакеты
  2. установить win32clipboard
  3. с 2 пункта выше вы могли играть со сценарием, как это:

    #get CF_Html Clipboard 
    import HtmlClipboard #.py script found in github 
    if HtmlClipboard.HasHtml(): 
        # print('there is HTML!!') 
        dirty_HTML = HtmlClipboard.GetHtml() 
        print(dirty_HTML) 
    else: 
        print('no html') 
    
    dirty_HTML= clean_HTML #do what you want with it 
    
    #put data to clipboard: 
    HtmlClipboard.PutHtml(clean_HTML) 
    

Бонус:

##get CF_TEXT from clipboard 
import win32clipboard 
win32clipboard.OpenClipboard() 
text = win32clipboard.GetClipboardData(win32clipboard.CF_TEXT) 
win32clipboard.CloseClipboard()