我使用Sub Test()
Dim PathName As String
Dim usFileName As String
PathName = "Your path"
usFileName = PathName & "\" & "Prices.txt"
Workbooks.OpenText Filename:=usFileName, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), _
Array(19, 1), Array(32, 1), Array(48, 1), Array(55, 1))
End Sub
在文件上查找单词,并将其存储为re
现在,我要使用存储在lattice_type
上的单词制作另一个正则表达式
我尝试以此方式使用变量名
lattice_type
我在这里寻找正则表达式pnt_grp=re.match(r'+ lattice_type + (.*?) .*',line, re.M|re.I)
并将lattice_type=
存储在group(1)
lattice_type
在这里我想使用包含单词的变量在另一个文件中找到它,但是我遇到了问题
latt=open(cell_file,"r")
for types in latt:
line = types
latt_type = re.match(r'lattice_type = (.*)', line, re.M|re.I)
if latt_type:
lattice_type=latt_type.group(1)
答案 0 :(得分:3)
仅在定义带有很多反斜杠的字符串时才需要r
前缀,因为正则表达式和Python字符串语法都将含义附加到反斜杠。 r'..'
只是一种替代语法,它使使用正则表达式模式变得更容易。您没有使用r'..'
原始字符串文字。有关更多信息,请参见Python regex howto中的The backslash plague。
所有这些都意味着,当您已经有一个字符串值时,您当然不需要使用r
前缀。正则表达式模式是只是一个字符串值,您可以使用常规的字符串格式或连接技术:
pnt_grp = re.match(lattice_type + '(.*?) .*', line, re.M|re.I)
我没有在上面的字符串文字中使用r
,因为表达式中没有\
的反斜杠会引起问题。
如果 值可能包含正则表达式元字符(例如{{1}),则可能需要在lattice_type
值上使用re.escape()
function }或.
或?
等。[
转义了此类元字符,以便仅匹配文字:
re.escape()