在课堂上,我们开发了IM转换程序,它接收IM消息 由首字母缩略词组成并将它们转换为全文。我们使用了一个创建的字典 来自名为abbreviations.txt的文件。您需要将代码扩展到帐户 以下两个额外要求:1)注意标点符号和2)如果不是首字母缩略词 字典,然后保持原样在翻译的消息中。 - 使用“abbreviations.txt”作为字典文件名。不要问用户文件名。 - 标点符号仅出现在单词的末尾。 a之间必须有空白 标点符号和下一个单词。你需要处理的标点符号是:“,”, “。”,“?”和“!”。
abbreviations.txt =
Y:为什么
R:是
U:你
L8:晚
哈哈:大声笑出来BRB:马上回来
到目前为止,这是我的代码:
# diimenhanced.py
#
def main():
infile = open("abbreviations.txt", "r")
d = {}
w = []
for line in infile:
temp = line.split(":")
d[temp[0]]=temp[1].rstrip()
w.append(temp[0])
infile.close()
im = input("Please input the instant message: ")
tim = ""
templist = im.split()
for i in templist:
if i[-1] in w:
tim = tim + ' ' + d[i]
else:
word = i[0:-1]
if word in w:
tim = tim + ' ' + d[word] + i[-1]
else:
tim = tim + i
print(tim)
main()
我一直试图让它发挥作用,但它继续吐出相同的IM,除非我在最后放一段时间。例如:BRB。 --->马上回来。和前:BRB ---> BRB
:/ /明天周五,真的需要帮助!谢谢!并且请仅在介绍性python中使用,所以如果你可以避免使用内置函数或复杂的方法。
答案 0 :(得分:1)
您可以尝试将其拆分为列表并在那里进行替换
def main():
infile = open("abbreviations.txt", "r")
d = {}
w = []
for line in infile:
temp = line.split(":")
d[temp[0]]=temp[1].rstrip()
# For easy punctuation marks manage add these rules
d[temp[0]+"?"] = temp[1].rstrip()+"?"
d[temp[0]+"!"] = temp[1].rstrip()+"!"
d[temp[0]+","] = temp[1].rstrip()+","
d[temp[0]+"."] = temp[1].rstrip()+"."
w.append(temp[0])
infile.close()
im = input("Please input the instant message: ")
im = im.split() # Split with space as separator
res = "" # String to store the result
for i in im: #Iterate over words
if i in d: # If the word is in our dic
res += d[i] # Add the substitution to result
else: # If no substitution needed
res += i # Add original word
res += " " # Add a space after each word
res = res.strip() # Delete extra spaces at the end
print(im)
print(res)
main()