我有兴趣知道是否有一种简单的方法可以在每行的末尾添加分号。我试过但总是在下一行打印分号。
rom_data.txt
0123
1
253
3
my_script.py
input_file = open("rom_data.txt", "r")
for line in input_file:
final= line+';'
print final
预期输出
0123;
1;
253;
3;
获得的输出
0123
;
1
;
253
;
3
;
有人可以告诉我哪里出错了吗
答案 0 :(得分:6)
所以你的文本文件由行组成。如果你要求观众显示不可打印的字符,它将显示类似
的内容0123\n
1\n
253\n
3\n
(或标记换行符的其他符号)
for line in input_file: # so here "line" is "0123\n"
final= line+';' # here you append a semicolon, so it becomes "0123\n;"
print final # print adds another line break, so the output is "0123\n;\n"
一个常见的解决方案是在循环中首先删除换行符:
for line in input_file:
line = line.strip() # here
final= line+';'
print final
答案 1 :(得分:1)
@Pavel的解决方案指出了问题,但请注意可能存在一些问题。
如果你的初始rom_data行以一些空白字符开头或结尾,那么strip()函数将全部删除它们,这可能与预期不符。
例如:
<强> rom_data.txt:强>
0123 \n
123 \n
456\n
可以获得以下输出:
0123\n
123\n
456\n
如果你想保留空白,你应该只删除最后一个字符:
for line in input_file:
print(line[:-1]) # use this way to strip only the '\n' character at last
这可能更准确。
答案 2 :(得分:1)
问题在于行中存在换行符。您需要使用rstrip去除换行符。请参阅以下代码:
input_file = open("rom_data.txt", "r")
for line in input_file:
final= line.rstrip('\n') + ';'
print final