如何在文件中每行的开头添加行号

时间:2017-03-24 07:31:18

标签: string python-3.x file

所以..我需要读取一个文件并在每行的开头添加行号。就像标题一样。你是怎么做到的?

例如,如果文件的内容是:

This
is
a
simple
test
file

这6行,我应该把它变成

1. This
2. is
3. a
4. simple
5. test
6. file

保留原始内容,但只需在开头添加行号。

到目前为止,我的代码看起来像这样:

def add_numbers(filename):
    f = open(filename, "w+")
    line_number = 1
    for line in f.readlines():
        number_added = str(line_number) + '. ' + f.readline(line)
        line_number += 1
        return number_added

但它并没有真正显示出任何结果。我没有线索怎么做。有什么帮助吗?

1 个答案:

答案 0 :(得分:4)

我在您的代码中看到的一些问题:

  • 你的缩进不正确。 public class TextToSpeechController implements TextToSpeech.OnInitListener{ private Context mContext; private TextToSpeech tts; public TextToSpeechController(Context context) { mContext = context; tts = new TextToSpeech(context, this); } @Override public void onInit(int status) { Log.e("INIT TTS", "INIT"); if (status == TextToSpeech.SUCCESS) { int result = tts.setLanguage(Locale.ENGLISH); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Toast.makeText(mContext, "This Language is not supported", Toast.LENGTH_LONG).show(); } else { Toast.makeText(mContext, "Ready to Speak", Toast.LENGTH_LONG).show(); speakTheText("Welcome to the App"); } } else { Toast.makeText(mContext, "Can Not Speak", Toast.LENGTH_LONG).show(); } } public void stopTTS(){ tts.stop(); tts.shutdown(); } public void speakTheText(String str){ tts.speak(str, TextToSpeech.QUEUE_FLUSH, null); } 以下的所有内容都应缩进一级。
  • 最好在方法结束时关闭文件句柄。

向你询问了类似的问题here。查看那里发布的各种解决方案,使用def add_numbers():似乎是您最好的选择,因为它允许您就地编辑文件。

fileinput

另请注意,我使用import fileinput def add_numbers(filename): line_number = 1 for line in fileinput.input(filename, inplace=True): print("{}. {}".format(line_number, line)) line_number += 1 组合两个字符串,而不是将它们一起添加,因为这样可以更轻松地处理不同的变量类型。可以找到使用格式的一个很好的解释here