我使用以下代码查找包含':'特殊字符的所有行。后来我试图从文件中删除这些行 -
myFile = open('myPOST.txt', 'rb')
myText = myFile.readlines()
for line in myText:
line.find(":") == "-1"
if line.find(":"):
python中是否有任何函数可以返回找到此字符的行(find()返回-1或行中搜索字符的位置)或者如果我只使用find()那么如何准确删除那些find()的值为-1的行?
答案 0 :(得分:2)
可选的就地过滤:如果将关键字参数
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()
将整个文件加载到内存中,而是写入一个临时文件,该文件被重命名为原始文件。
答案 1 :(得分:1)
如果您只想在现有程序中执行此操作,而不必使用fileinput
等命令行实用程序。
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)