我们将使用正则表达式在您的文本文件中查找和替换数据。
正则表达式在某种形式的数据中搜索模式。数据可以是 HTML 文件、word 文件(假设您知道如何提取文本),或者在您的情况下是普通文本文件。要实现正则表达式,您需要使用特殊字符来表示模式的某些特征。 findall 函数采用以下形式:
re.findall(pattern,string)
例如,如果你想在一个文档中找到所有单词“staircase”,你可以写
re.findall("staircase",text)
其中“staircase”是模式,text 是字符串。该程序会将“staircase”的所有实例作为您用作输入的文本中的数组返回。但是,如果您还想包括大写版本的 staircase,即“Staircase”,假设它位于句子的开头,该怎么办?在这种情况下,您使用了我之前提到的特殊字符:您将改为编写以下模式
re.findall("(S|s)taircase",text)
该 |元字符表示左边的内容或右边的内容。还要注意括号是如何用于将项目组合在一起的,这在正则表达式中很常见。因此,正则表达式搜索以下任一字符串:“Staircase”或“staircase”。正则表达式中其他一些重要的元字符是
“\w”匹配任何“word”字符,因此“a”、“b”、“C”和“D”都将匹配这个元字符。
"\W" 匹配任何非单词字符,因此 "1"、"2"、">"、"?" 和 "=" 都将由该元字符匹配。
"\s" 匹配任何空白字符。
"\S" 匹配任何非空白字符。
"\d" 匹配所有数字字符,0-9。
"\D" 匹配任何非数字字符。
除了前面的元字符之外,还有量词 *、+、?、{n}、{min,} 和 {min, max}。以下是这些元字符的简要说明:
“*”匹配前一个元素的零次或多次出现。
“+”匹配前一个元素的一次或多次出现。
“?”匹配前一个元素的零次或一次。
"{n}" 匹配前一个元素的 n 次出现。
"{min,}" 匹配至少 min 次出现的前一个元素。
"{min,max}" 匹配前一个元素的 min 和 max 出现次数(包括 min 和 max)。
举个例子来说明我们到目前为止所介绍的内容,下面是一个使用分组、或符号、量词和元字符的模式示例。
re.findall("(A|a)pple\d*",text)
正则表达式会找到以下所有子字符串:“Apple”、“apple”、“Apple0”、“apple0”、“Apple00”、“apple00”等。
现在我们已经了解了正则表达式的介绍,我们可以继续实际编写代码来使用 Python 解决您的问题。
import re
textFile = open(pathToTextFile,"r")
rawText = textFile.read()
textFile.close()
tags = ["<code>","</code>"]
count = 0
output = ""
for line in rawText.split("\n"):
if "```" in line:
output+=re.sub("```",tags[count%2],line)+"\n"
count+=1
else:
output+=line+"/n"
outFile = open(pathToOutFile,"w")
outFile.write(output)
outFile.close()
如果您的计算机上安装了 Python,请打开 IDLE 并创建一个新文件。将打开一个新窗口。这是您编写命令的地方。
我们需要做的第一件事是导入一个名为 re 的包,这是一个用于正则表达式的模块。然后我们加载文本文件(插入您的路径),读取其内容,然后关闭文本文件。
接下来,我们定义一个名为 tags 的数组,其中包含我们将用来替换三个引号的两个标签、一个名为 count 的整数,用于确定要添加的标签,以及一个空输出字符串。
然后我们迭代 rawText 变量的每一新行,每当我们看到三引号时,我们用其中一个标签替换,然后更新 count 变量。否则,我们只需添加该行并移动到 for 循环的下一个元素。
最后,我们创建一个用于写入的新文件(插入您的路径),写入输出字符串,然后关闭文件。我们完成了!输出如下所示。
<code>
Default:
Publisher Bid Modifier Object with values=[]
</code>
<td>
<code>
Publisher Bid Modifier Object
</code>
</td>
参考:https://en.wikipedia.org/wiki/Regular_expression;