首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换文件中的字符串和RegEx

替换文件中的字符串和RegEx
EN

Stack Overflow用户
提问于 2020-01-16 11:32:08
回答 1查看 65关注 0票数 1

这是我的第一个问题,我对Python非常陌生。

不过,在问:-D之前,我确实尝试了几件不同的事情

我有一个文件(test.txt),它包含一些文本,如下所示:

代码语言:javascript
复制
name="NAME-ABC"                                                         NewName="GOOD MORNING"
name="NAME-123456"                                                      NewName="HELLO"
name="NAME-3"                                                           NewName="ALLO"

我试图获得的输出是一个字典,其中包含前面的值,如:

代码语言:javascript
复制
{"NAME-ABC":"GOOD MORNING","NAME-123456":"HELLO","NAME-3":"ALLO"}

使用一个小字典(下面示例中的“d”),我成功地删除了第一个name=部分并用逗号替换了尾行,但是中间部分(包含不一致的空格和制表符+ NewName=),我无法处理它。

到目前为止我的代码是:

代码语言:javascript
复制
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文件如下:

代码语言:javascript
复制
"NAME-ABC"                                                      NewName="GOOD MORNING",
"NAME-123456"                                               NewName="HELLO",
"NAME-3"                                                        NewName="ALLO"

但如果我把一些东西

代码语言:javascript
复制
d =    {
      "name=": "",
      "\n": ",",
       re.compile(r'\s*NewName='): ":"}

我得到以下错误

TypeError:替换()参数1必须是str,而不是re.Pattern

然后我尝试使用re.sub来处理regex,但是现在,它根本不做任何事情(程序运行,但文件中没有修改):

代码语言:javascript
复制
for line in "test.txt":
    line = re.sub(r'\s*NewName=',":","test.txt")

提前感谢你们的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-16 11:38:53

使用Regex。

Ex:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59768758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档