0

我正在使用以下代码来查找所有包含“:”特殊字符的行。后来我试图从文件中删除这些行 -

myFile = open('myPOST.txt', 'rb')
    myText = myFile.readlines()
    for line in myText:
             line.find(":") == "-1"
         if line.find(":"):

python中是否有任何函数可以准确返回找到该字符的行(find()返回-1或行中搜索字符的位置)或者如果我只使用find(),那么如何删除这些行find() 的值为-1?

4

2 回答 2

3

使用fileinput

可选的就地过滤:如果将关键字参数inplace=1传递给fileinput.input()构造FileInput函数,则将文件移动到备份文件,并将标准输出定向到输入文件(如果与备份文件同名的文件已经存在,它将被静默替换)。这使得编写一个过滤器来重写其输入文件成为可能。

myPOST.txt

abc
de:f
ghi

import fileinput
for line in fileinput.input('myPOST.txt', inplace=True): 
    if ':' in line:
        continue # skip it
    print line.rstrip('\n') # stdout redirected to file

myPOST.txt

abc
ghi

这个解决方案的好处是它不使用.readlines()将整个文件加载到内存中,而是写入一个重命名为原始文件的临时文件。

于 2013-05-10T13:04:59.483 回答
1

如果您只是想在现有程序中执行此操作,而不是像fileinputexcels 这样的命令行实用程序。

with open("myPOST.txt", "rb") as my_file:
    for line in my_file:
        if ":" not in line:
            # do whatever you want here
            # these are only the lines that do not have a ':' character

如果您只想查找行号

line_numbers = []
with open("myPOST.txt", "rb") as my_file:
    for line_num, line in enumerate(my_file):
        if ":" in line:
            line_number.append(line_num)
于 2013-05-10T15:34:15.683 回答