从行中删除单词,并使用python将行保存到文件中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从行中删除单词,并使用python将行保存到文件中相关的知识,希望对你有一定的参考价值。

我需要以下行:test_list =“ root / abc_test.list someText tests / long_test.list someText tests / h2.list”

将更改为:

test_list="tests/My_test.list" 

** .list可能出现在行中的任何位置。

实际上需要做的是找到每个具有“ .list的单词,如果它是long_test.list,将其更改为My_test.list,然后将其更改后,然后删除所有包含".list"的其他字符串,接受改变了。

为了解决此问题,我将单词long_test.list更改为xXxXxX,然后删除了所有.list单词,然后将xXxXxX更改回My_test.list。为此,我使用了以下代码:

  with in_place.InPlace('RUN_NEW') as file:
      for line in file:
          line = line.replace('long_test_list', 'xXxXxX')
          file.write(line)
      file.close()

  with open("RUN_NEW","r+") as f:
      new_f = f.readlines()
      f.seek(0)
      for line in new_f:
          line = str(line).split(' ')
          print(line)
          print(len(line))
          for word in line:
              if ".list" not in word:
                  f.write(word)
      f.close()

   with open("file.txt","r+") as f:
      new_f = f.readlines()
      f.seek(0)
      for line in new_f:
          line = str(line).split(' ')

          for k in line:
               if ".list" not in k:
                  s=' '
                  print(s.join(k.split('"')))
                  #f.write(s.join(k.split('"')))

上述代码的问题是,用('')分割后的行看起来像['set', 'test_list="tests/long_test.list', 'tests/h2.list"'],当我尝试将其重新加入时,它将在每个不包含"\n"的子字符串之后将其保存为.list。我当时在考虑正则表达式,但这只会删除.list本身,即所有子字符串。而且我也想保存报价,但不要在拆分期间将其删除。

答案

此小脚本演示了如何在一行中进行替换。使用re.sub查看读入的行(在此处模拟),并查找双引号,后跟可选的一组任意数量的以空格结尾的字符(如果目标路径位于字符串的开头,则为可选)然后是捕获的任意数量的字符组,其后是文字“ long_test.list”,其后是任意数量以双引号结尾的字符。如果找到整个匹配项,则用双引号替换,然后是第一个捕获的组,然后是文字“ My_test.list”,然后是双引号。如果找不到匹配项,则将返回读入的整行。

#!/usr/bin/env python

import re

line = 'test_list="root/abc_test.list someText tests/long_test.list someText tests/h2.list"'

print(line)

line = re.sub(r'"(.* )?(.*)long_test.list.*"', r'"\2My_test.list"', line)

print(line)

$ ./test.py
test_list="root/abc_test.list someText tests/long_test.list someText tests/h2.list"
test_list="tests/My_test.list"
$ 

以上是关于从行中删除单词,并使用python将行保存到文件中的主要内容,如果未能解决你的问题,请参考以下文章

我有 3 行的 SQLite 数据库,当我从行中删除数据时,数据会丢失但行仍然会,我怎样才能删除那个空白行?

从行中删除表格附件指示器

python如何从行中提取符合的信息,正则表达式

如何在以前读过的行中找到一些单词并在输出中删除它 - C++ 中的读/写字符串

如何从行中获取/打印值[重复]

将行拆分为 12 列