Regex 替换文件中的字符串和正则表达式
这是我的第一个问题,我对Python还很陌生 尽管如此,我还是尝试了一些不同的方法 我有一个文件(test.txt),其中包含一些如下组织的文本:Regex 替换文件中的字符串和正则表达式,regex,python-3.x,replace,Regex,Python 3.x,Replace,这是我的第一个问题,我对Python还很陌生 尽管如此,我还是尝试了一些不同的方法 我有一个文件(test.txt),其中包含一些如下组织的文本: name="NAME-ABC" NewName="GOOD MORNING" name="NAME-123456" NewName="
name="NAME-ABC" NewName="GOOD MORNING"
name="NAME-123456" NewName="HELLO"
name="NAME-3" NewName="ALLO"
"NAME-ABC" NewName="GOOD MORNING",
"NAME-123456" NewName="HELLO",
"NAME-3" NewName="ALLO"
我试图获得的输出是一个包含以前值的字典,例如:
{"NAME-ABC":"GOOD MORNING","NAME-123456":"HELLO","NAME-3":"ALLO"}
使用一个小字典(在下面的示例中是“d”),我成功地删除了first name=部分,并用逗号替换了结束行,但是中间部分(包含不一致的空格和制表符数+NewName=)我无法处理它
到目前为止,我的代码是:
d = {
"name=": "",
"\n": ","}
for x in range(len(d)):
with open("test.txt") as f:
newText=f.read().replace(list(d.items())[x][0], list(d.items())[x][1])
with open("test.txt", "w") as f:
f.write(newText)
这给了我一个text.txt文件,如下所示:
name="NAME-ABC" NewName="GOOD MORNING"
name="NAME-123456" NewName="HELLO"
name="NAME-3" NewName="ALLO"
"NAME-ABC" NewName="GOOD MORNING",
"NAME-123456" NewName="HELLO",
"NAME-3" NewName="ALLO"
但是如果我把
d = {
"name=": "",
"\n": ",",
re.compile(r'\s*NewName='): ":"}
我得到以下错误
TypeError:replace()参数1必须是str,而不是re.Pattern
然后我尝试使用re.sub来处理regex,但现在,它什么都不做(程序运行,但文件中没有修改):
提前感谢您使用Regex提供的帮助
Ex:
import re
res = {}
with open(filename) as infile:
for line in infile: #Iterate Each line
k, v = re.findall(r'=\"(.*?)\"', line.strip()) #Get Key-Value --> Get string in Quotes
res[k] = v #Form output
print(res)