尝试编写一个程序,从命令行接收我的可执行文件+一个名为'no-comments'的可选参数和文件。
因此,如果有人在命令行中写道:stripWhiteSpace.py file.rtf 然后它会删除除新行之外的所有空格。
如果有人在命令行中写道:stripWhiteSpace.py no-comments file.rtf 然后它将删除除新行之外的所有空格,并删除以“//”开头的所有C / C ++ / Java样式注释以及之后的任何内容(整个注释)。
这是我的代码(名为stripWhiteSpace.py):
import sys
file = sys.argv[-1]
with open(file, 'r+') as f:
final_file = ""
if sys.argv[1] == "no-comments":
for line in f:
line = line.partition('//')[0]
line = line.strip(' \t\r')
final_file += line
else:
for line in f:
line = line.strip(' \t\r')
final_file += line
f.write(final_file)
该文件已成功通过我的python文件传递。问题是,它没有改变。任何帮助表示赞赏。
答案 0 :(得分:2)
问题在于您如何使用strip()
。执行line.strip(' \t\r')
只会删除' \t\r'
,即空格,后跟一个制表符,然后是回车符。我不认为这会经常发生。语法应为line.strip([' ', '\t', '\r'])
。
说了这么多,如果你想删除所有空格,strip
不会这样做,它只会删除该行开头或结尾的空白区域。如果要删除所有空格,则需要使用.replace()
。