Python 如何删除一行开头的两个字符
我是个彻头彻尾的巨蟒迷。如何删除文件中每行开头的两个字符?我试着这样做:Python 如何删除一行开头的两个字符,python,Python,我是个彻头彻尾的巨蟒迷。如何删除文件中每行开头的两个字符?我试着这样做: #!/Python26/ import re f = open('M:/file.txt') lines=f.readlines() i=0; for line in lines: line = line.strip() #do something here 将帮助您: >>> a="Some very long string" >>> a[2:] 'm
#!/Python26/
import re
f = open('M:/file.txt')
lines=f.readlines()
i=0;
for line in lines:
line = line.strip()
#do something here
将帮助您:
>>> a="Some very long string"
>>> a[2:]
'me very long string'
只需使用第[2:][/p>行,您就有了一个良好的开端。在循环中尝试以下操作:
for line in lines:
line = line[2:]
# do something here
[2:]被称为“”语法,它本质上是说“给我这个序列中从索引2开始一直到结尾的部分(因为冒号后面没有指定终点)。与其使用for循环,不如使用列表理解:
[line[2:] for line in lines]
出于好奇,一定要检查
cut
unix工具
$ cut -c2- filename
-c的切片语法与python非常相似。作为提示,您可以将程序缩短为
for line in open('M:/file.txt'):
line = line[2:]
如果您也需要携带行号,请使用
for i, line in enumerate(open('M:/file.txt.')):
line = line[2:]
如果要修改文件内容,而不仅仅是处理字符串,请尝试
fileinput
的inplace
参数:
# strip_2_chars.py
import fileinput
for line in fileinput.input(inplace=1):
print line[2:]
然后,在命令行上:
python strip_2_chars.py m:\file.txt
您会发现python有一些很好的处理字符串的方法。您可能还想查看其他一些有用的字符串方法,如split()、replace()和startswith()/endswith()。了解以下方法之间的细微但重要的区别可能会很有趣:
file = open( filename )
lines = file.readlines()
for line in lines:
do something
及
第一个解决方案(使用读取行
)将文件的全部内容加载到内存中,并返回一个python列表(字符串).另一方面,第二种解决方案使用了称为a的东西。这实际上会根据需要移动文件中的指针并返回字符串。这有一个重要的好处:文件不会加载到内存中。对于小文件,两种方法都可以。但只要您只逐行处理文件,我建议使用ite直接改变行为
因此,我的解决方案是:
infile = open( filename )
outfile = open( "%s.new" % filename, "w" )
for line in infile:
outfile.write( line[2:] )
infile.close()
outfile.close()
请考虑一下:如果它是非ASCII文件(例如LATI-1编码),请考虑使用。否则,您可能会有一个令人讨厌的意外,因为您可能会意外地将多字节字符切成两半;
但是,如果您不需要python,只需要从文件中裁剪前两个字符,那么最有效的方法是kch的建议并使用cut
:
cat filename | cut -d2- > newfile
对于这些快速而肮脏的文件操作,我总是在我的非linux boxen上安装。但我相信这些工具也有一套windows二进制文件,它们的执行速度比cygwin iirc快。既然您正在学习Python,我想补充一点,因为Python提供了各种工具(切片、拆分、替换和所有提到的其他任务),您会发现对于许多任务来说,正则表达式都是多余的
import re
在您的示例开始时,可能严格需要,也可能不需要。效率不高,但确实有效。看起来相当复杂
print line[-(len(line)-2):]
您应该阅读教程()。您想要的内容在介绍中是正确的(请参阅“字符串”).+1用于在问题的上下文中提供答案和初学者级别的解释。为什么这不提供答案?它确实提供了答案,只是数据看起来很复杂。请解释涉及纯编码时的逻辑。您的代码片段做什么,以及它如何解决问题。因为OP对python i来说是新的t将帮助他更好地理解代码。
cat filename | cut -d2- > newfile
import re
print line[-(len(line)-2):]