0

私は次のことをしようとしていますが、最終的に Outlook にフィードされるデータはめちゃくちゃです。入力、出力、およびコードについては、以下の貼り付けリンクを参照してください。

1.minidom を使用して xml からデータを読み取ります 2.ハイパーリンクがある場合は、正規表現に置き換えて ahref 属性を追加します 3.データを Outlook に出力します

INPUT/Output:-
http://pastie.org/5408694

私のコード:-

http://pastie.org/5408681

# Import package to access Outlook
import win32com.client
import re
import xml.dom.minidom as minidom
resultslis=[]

def getsanityresults(xmlfile):
  dom = minidom.parse(xmlfile)
  data=dom.getElementsByTagName('Sanity_Results')
  textnode = data[0].childNodes[0]
  testresults=textnode.data
  for line in testresults.splitlines():
    line = line.strip('\r,\n')
    line = re.sub(r'(http://[^\s]+|//[^\s]+|\\\\[^\s]+)', r'<a href="\1">\1</a>', line)
    print line     
    resultslis.append(line)
  return resultslis

def main ():
  file = open('results.xml','r')
  sanityresults=getsanityresults(file)
  print sanityresults
  msg_body=("<HTML><head></head>"
        "<body> <font face = \"Calibri\" <br>"
          "<font face = \"Calibri\"%s<br><br>"

        "</body></html>"
        ) % (sanityresults)

  olMailItem = 0x0
  obj = win32com.client.Dispatch("Outlook.Application")
  newMail = obj.CreateItem(olMailItem)
  newMail.HTMLBody = msg_body
  newMail.display()

if __name__ == '__main__':
  main()
4

1 に答える 1

1

私は自分の質問に答えています。サブルーチンへの次の変更が機能しました

def getsanityresults(xmlfile):
    testresult=[]
    dom = minidom.parse(xmlfile)
    data=dom.getElementsByTagName('Sanity_Results')
    textnode = data[0].childNodes[0]
    testresults=textnode.data
    for line in testresults.splitlines():
        line = line.strip('\r,\n')
        line = re.sub(r'(http://[^\s]+|//[^\s]+|\\\\[^\s]+)', r'<a href="\1">\1</a>', line)
        testresult.append(line) 
    return '<br>'.join(testresult)
于 2012-11-21T03:19:36.407 に答える