如何使用python从文件中删除一行
我正在使用以下代码来查找包含':'特殊字符的所有行。后来我想从文件中删除那些行 -如何使用python从文件中删除一行
myFile = open('myPOST.txt', 'rb')
myText = myFile.readlines()
for line in myText:
line.find(":") == "-1"
if line.find(":"):
是否有蟒蛇,它返回正是这个角色找到了行(find()方法返回-1或任何功能的搜索字符的位置该行)或者如果我只使用find(),那么如何删除find()的值为-1的那些行?
可选就地过滤:如果关键字参数
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()
,它将整个文件加载到内存中,而是写入一个临时文件,该文件被重命名为原始文件。
打印line.rstrip()'是最有可能的权利(谁需要拖尾空间) - '打印行,'是一种可能性 – 2013-05-10 18:29:14
@JonClements Alrighty我用'rstrip('\ n')' – jamylak 2013-05-13 09:07:29
如果你只是想你现有的程序中做到这一点,而无需它是一个命令行工具一样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)
如果你希望你的行号用'为LINE_NO,在枚举行(会将myText)'' – jamylak 2013-05-10 13:08:15