PYTHON:翻译 - 即时消息缩写 - >文本?

时间:2014-03-06 22:52:20

标签: python list dictionary

在课堂上,我们开发了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中使用,所以如果你可以避免使用内置函数或复杂的方法。

1 个答案:

答案 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()