我正在使用Python从csv文件创建一个excel文件。我试图让它到哪里,如果为单元格的数据以“=”开头,然后打印它作为一个excel函数。。。但我一点运气都没有。我试着对字符串执行regex,看看它是否以“=”开头,但它不起作用。到目前为止,我在Python中的内容如下:
import xlwt
import re
string = '=HYPERLINK("http://www.google.com";"Google")'
if re.match("^=", string) == True:
formData = re.sub('=', '', string)
sheet.write(row_count,col-1, Formula("'" + formDta + "'"),style)
这不是正确的方法,还是我的语法不对?有什么建议可以让我这样做吗?你知道吗
问题是你在和
True
比较。Python的True
是一个布尔对象。re.match()
返回match
对象。当Python比较两者时,类型不匹配,if
测试失败。你知道吗在python中执行regexp测试的惯用方法是:
为了
if
和while
测试的目的,Python将大多数非False
、非None
值视为true。上面的代码使用这种行为—如果正则表达式匹配,则返回一个match
对象并通过测试。如果正则表达式不匹配,则返回None
,测试失败。你知道吗你不需要正则表达式。像这样的:
if string.startswith('='): do something
就可以了。你知道吗也就是说,下面是Python documentation for the ^{} module 的摘录:
也就是说,如果您使用的是
re.match()
,那么^
行锚点的开始是不必要的。你知道吗EDIT:@aix对
re.match()
的行为是正确的-它只会将模式匹配到整行(而不是其中的一部分)代码无法工作的原因是} ,或者将正则表达式更改为
re.match()
仅在整个输入字符串与regex匹配时返回True
。在您的情况下,只有第一个字符可以。您可以使用^{"^=.*"
。然而,我认为startswith()
是一个更好的方法。你知道吗另外,我已经重命名了您的变量,这样它就不会影响标准的^{} 模块。你知道吗
相关问题 更多 >
编程相关推荐