这是我的第一个问题,我对Python非常陌生。
不过,在问:-D之前,我确实尝试了几件不同的事情
我有一个文件(test.txt),它包含一些文本,如下所示:
name="NAME-ABC" NewName="GOOD MORNING"
name="NAME-123456" NewName="HELLO"
name="NAME-3" NewName="ALLO"我试图获得的输出是一个字典,其中包含前面的值,如:
{"NAME-ABC":"GOOD MORNING","NAME-123456":"HELLO","NAME-3":"ALLO"}使用一个小字典(下面示例中的“d”),我成功地删除了第一个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-ABC" NewName="GOOD MORNING",
"NAME-123456" NewName="HELLO",
"NAME-3" NewName="ALLO"但如果我把一些东西
d = {
"name=": "",
"\n": ",",
re.compile(r'\s*NewName='): ":"}我得到以下错误
TypeError:替换()参数1必须是str,而不是re.Pattern
然后我尝试使用re.sub来处理regex,但是现在,它根本不做任何事情(程序运行,但文件中没有修改):
for line in "test.txt":
line = re.sub(r'\s*NewName=',":","test.txt")提前感谢你们的帮助
发布于 2020-01-16 11:38:53
使用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)https://stackoverflow.com/questions/59768758
复制相似问题