如何为字符转换Python代码实现多行字符串输入功能?
实现多行字符串输入的两种方案
方法1:利用EOF结束输入(原生方式)
原代码里的sys.stdin.read()本身就支持多行输入,只是需要明确告知用户结束输入的操作:
- Windows系统:输入完多行内容后,按
Ctrl + Z再回车 - Linux/macOS系统:输入完多行内容后,按
Ctrl + D
修正后的代码(移除冗余操作并补充提示):
import sys # 请在此处定义你的字符转换字典 translation = {"a": "α", "b": "β", "c": "γ"} # 示例转换表 print("Enter PC2 text to convert to InPage (输入完成后按 Ctrl+Z+回车(Windows) 或 Ctrl+D(Linux/macOS) 结束):") text = sys.stdin.read() translated_table = text.maketrans(translation) finaltext = text.translate(translated_table) print("Provide a name of the file:") fileofname = input().strip() name = f"{fileofname}.txt" with open(name, 'w', encoding='utf-8') as f: f.write(finaltext) print(f"转换完成,结果已写入 {name}")
方法2:自定义结束标记(更友好)
如果觉得EOF快捷键不够直观,可以设置自定义结束标记(比如单独一行输入END)来终止输入,代码如下:
# 请在此处定义你的字符转换字典 translation = {"a": "α", "b": "β", "c": "γ"} # 示例转换表 print("Enter PC2 text to convert to InPage (输入完成后单独一行输入 END 结束):") lines = [] while True: line = input() if line.strip().upper() == "END": break lines.append(line) text = "\n".join(lines) translated_table = text.maketrans(translation) finaltext = text.translate(translated_table) print("Provide a name of the file:") fileofname = input().strip() name = f"{fileofname}.txt" with open(name, 'w', encoding='utf-8') as f: f.write(finaltext) print(f"转换完成,结果已写入 {name}")
关键说明
- 必须确保
translation字典已正确定义,键为原字符,值为目标转换字符 - 写入文件时指定
encoding='utf-8',避免Unicode字符出现乱码 - 移除了原代码中冗余的
sys.stdout = f,该操作会修改标准输出,无实际必要 - 方法2的结束条件可灵活调整,比如改成输入空行结束(判断
if not line.strip())
内容的提问来源于stack exchange,提问作者BotZakk
相关产品推荐
相关产品推荐

