Ms-Word及其奇特的引号打破了字符串comp

2024-10-05 10:06:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用win32com.客户端在python中打开word进程,打开一个doc,并将一些文本与代码中的python变量进行比较。在

例如:

我的代码中有:

HeaderName = 'xyz'

我打开word doc并访问标题文本:

^{pr2}$

或者比较两张打印出来,然后我通过

if HeaderName == self.HeaderName:
    print('Pass')
else:
    print('Fail')

问题是标题包含双引号时。Ms Word使用了花哨的引号,这打破了我的字符串比较。在

>>> chr(8220)
'“'
>>> chr(8221)
'”'
>>> chr(8220) == '"'
False
>>> chr(8221) == '"'
False

我该怎么办?我甚至试着用普通引号替换所有花哨的引语,但word只是又回到了花哨的引号。我不想做下面的事情,因为我做了很多字符串比较,不想去改变每一个,除非这是唯一的解决方案。在

if headerName == self.HeaderName.replace(chr(8220), '"').replace(chr(8221),'"'):
    print('Pass')
else:
    print('Fail')

Tags: 代码文本self标题docifpasselse
1条回答
网友
1楼 · 发布于 2024-10-05 10:06:04

别担心。我使用了一个名为ReplaceQuotes的函数将其替换为一些疯狂的字符组合。修改了我的代码,把字符串中所有的双引号替换成那个疯狂的字符组合,然后比较它们。在

def ReplaceQuotes(self):
    wdFindContinue = 1
    wdReplaceAll = 2

    # Note self.word is the instance of the Word application

    self.word.Selection.Find.Execute(chr(8221), False, False, False, False, False, True, wdFindContinue, False, '!(0_0)!', wdReplaceAll)
    self.word.Selection.Find.Execute(chr(8220), False, False, False, False, False, True, wdFindContinue, False, '!(0_0)!', wdReplaceAll)

相关问题 更多 >

    热门问题