当前位置: 首页 > 面试题库 >

python猪拉丁转换器

岳鸿畴
2023-03-14
问题内容

请帮我!

我正在将多行文本文件转换为猪拉丁文。

示例:Pig的拉丁语翻译:这是一个示例。应该是:Histay siay naay xampleeay。

我需要将标点符号留在原处(大多数情况下是句子的结尾)。我还需要任何以原始字母大写字母开头,以猪拉丁字母大写字母开头的单词,以及其余的字母小写。

这是我的代码:

def main():
    fileName= input('Please enter the file name: ')

    validate_file(fileName)
    newWords= convert_file(fileName)
    print(newWords)


def validate_file(fileName):
    try:
        inputFile= open(fileName, 'r')
        inputFile.close()
    except IOError:
        print('File not found.')


def convert_file(fileName):
    inputFile= open(fileName, 'r')
    line_string= [line.split() for line in inputFile]

    for line in line_string:
        for word in line:
            endString= str(word[1:])
            them=endString, str(word[0:1]), 'ay'
            newWords="".join(them)
            return newWords

我的文本文件是:

This is an example.

My name is Kara!

程序返回

Please enter the file name: piglatin tester.py
hisTay
siay
naay
xample.eay
yMay
amenay
siay
ara!Kay
None

我如何让他们按照他们所在的行打印?另外,我该如何处理标点符号和大写字母呢?


问题答案:

这是我对您的代码的修改。您应该考虑使用nltk。它具有更强大的单词标记化处理。

def main():
    fileName= raw_input('Please enter the file name: ')

    validate_file(fileName)
    new_lines = convert_file(fileName)
    for line in new_lines:
        print line

def validate_file(fileName):
    try:
        inputFile= open(fileName, 'r')
        inputFile.close()
    except IOError:
        print('File not found.')

def strip_punctuation(line):
    punctuation = ''
    line = line.strip()
    if len(line)>0:
        if line[-1] in ('.','!','?'):
            punctuation = line[-1]
            line = line[:-1]
    return line, punctuation

def convert_file(fileName):
    inputFile= open(fileName, 'r')
    converted_lines = []
    for line in inputFile:
        line, punctuation = strip_punctuation(line)
        line = line.split()
        new_words = []
        for word in line:
            endString= str(word[1:])
            them=endString, str(word[0:1]), 'ay'
            new_word="".join(them)
            new_words.append(new_word)
        new_sentence = ' '.join(new_words)
        new_sentence = new_sentence.lower()
        if len(new_sentence):
            new_sentence = new_sentence[0].upper() + new_sentence[1:]
        converted_lines.append(new_sentence + punctuation)
    return converted_lines


 类似资料:
  • 问题内容: 我有一个树形结构,其中的关键字可能包含一些拉丁字符。我有一个遍历树上所有叶子并在特定条件下将每个关键字添加到列表的函数。 这是我将这些关键字添加到列表中的代码: 如果在这种情况下的关键字是,那么我的输出是: 看来打印功能可以正确显示拉丁字符,但是当我将其添加到列表中时,它就会被解码。 我该如何更改?我需要能够使用标准拉丁字符而不是它们的解码版本来打印列表。 问题答案: 您没有unico

  • 问题内容: 我有带重音拉丁字符的unicode字符串,例如 我想将其转换为普通的ascii,即“ Wikipedia,le projet dencyclopedie”,因此所有急性/重音,塞迪利亚等都应删除 什么是最快的方法,因为需要这样做才能匹配较长的自动完成下拉列表 结论: 作为速度的标准,Lennart的“注册您自己的错误处理程序以进行Unicode编码/解码”可提供最佳效果(请参见Alex

  • 013. Roman to Integer 问题 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. Subscribe to see which companies asked this question 思路 首先要知道罗马数字的规

  • 012. Integer to Roman[M] 问题 Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 思路 分析罗马数字的规律: Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1,000

  • 我目前正在制作一个拉丁方块,以用户设置的数字开始,但为了简单起见,我将排除扫描仪代码。 它打印出来: 它是如此接近,考虑到事实,它确实从我预先确定的第一个数字开始,它只打印4个整数。我遇到的问题是,它比我的顺序整数走得更远,而且它打印的行数是双倍。你知道我能做些什么来解决这个问题吗?

  • 问题内容: 我想在matplotlib中旋转一个Rectangle,但是当我应用转换时,该矩形不再显示: 这是一个已知的错误还是我做错了? 问题答案: 显然,面片上的变换是用于处理缩放和边界框的几种变换的组合。将变换添加到现有的绘图变换中似乎可以提供更多您所期望的东西。虽然看起来还有一些补偿需要解决。