所以..我需要读取一个文件并在每行的开头添加行号。就像标题一样。你是怎么做到的?
例如,如果文件的内容是:
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
但它并没有真正显示出任何结果。我没有线索怎么做。有什么帮助吗?
答案 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。