在分行后加一个分号

时间:2014-06-03 22:50:27

标签: python

我有兴趣知道是否有一种简单的方法可以在每行的末尾添加分号。我试过但总是在下一行打印分号。

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
;

有人可以告诉我哪里出错了吗

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