2017-01-15 3 views
1

Je veux copier du texte enrichi, modifier son code source (en changeant quelques balises et du texte, en utilisant regex et/ou beautifulsoup) et le renvoyer dans le presse-papier. Je cherche la façon la plus simple de le faire. J'ai essayé win32clipboard, mais doesn't support the CF_HTML format (windows clipboard contains many formats).python 3.6 windows: récupérer le presse-papiers Format CF_HTML

Je cherche donc un module qui pourrait m'aider à obtenir ce format: si le format de presse-papiers CF_HTML contient du HTML, le stocker dans cette variable, faire une opération, puis le renvoyer. (En option: et faire d'autres choses dans d'autres formats de presse-papiers)

Voici un équivalent Linux de ce que je recherche. Il récupère la source HTML, quand il y a certains dans le presse-papiers (source)

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

Edit1: Il y a un travail autour de pywin32 en utilisant this script. Mais existe-t-il un module capable de le faire directement (si CF_HTML contient des données, l'obtenir, et le renvoyer)?

Répondre

0

La solution Edit1 semble être la meilleure.

  1. mettre le script ci-dessus (HtmlClipboard.py) dans le dossier module python: C: \ Users \ xxx \ AppData \ Programmes \ Local \ Python \ Python36 \ Lib \ site-packages
  2. installer win32clipboard
  3. avec les 2 points ci-dessus vous pourriez jouer avec un script comme celui-ci:

    #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) 
    

Bonus:

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