Python Pig拉丁语到txt fi

2024-06-26 00:24:17 发布

您现在位置:Python中文网/ 问答频道 /正文

def main():

    pigFile = open('pigTest.txt', 'r')
    pigOut = open('pigOut.txt', 'w')

    vowels = ['a', 'e', 'i', 'o', 'u', 'y']

    pigList = getWords(vowels, pigFile)

    t = translate(pigList, vowels)
    print(pigList)
    print("Converted: ", t)

    w = write(t, pigOut)
    pigFile.close()

def getWords(vowels, file):

    data = file.read().split()

    return data
def translate(pigList, vowels):
    newPigList = []

    for word in pigList:
        if word[0] in vowels: # if the first index of the first word is a vowel
            newPigList.append(word + "way") #add to new list
        else: #if letter does not begin with vowel
            newPigList.append(word[1:] + word[0] + "ay")

    return newPigList

def write(pigList, pigOut):
    pigOut.write(" ".join(pigList))

main()

输出:

^{pr2}$

问题:“awayway”应该在输出中的新行上,因为pigTest.txt文件这是一条新线路

我的程序把所有的文本推到第一行,当它应该放在正确的行,我不知道如何解决它

我的txt文件如下所示

if beast student 
away

Tags: txtifmaindefopentranslatewordwrite
3条回答

确保您理解str.joindocs
你想要:

"\n".join(pigList)

试试这个方式:-在

vowels = ['a', 'e', 'i', 'o', 'u', 'y']
with open('file2.txt') as f, open('pigOut.txt', 'w+') as out:
    newPigList = []
    for line in f.read().splitlines():
        line = line.split()
        newPigList.append(map(lambda x: x+'way' if x[0] in vowels else x[1:] + x[0] + "ay", line))     
    print newPigList
    for data in newPigList:
        out.write(str(data)+'\n')
    out.seek(0)
    print out.read()

在输出:-在

^{pr2}$

解决方案是逐行处理输入。一种方法是调用pigFile.readlines()并对它返回的行进行迭代。在

def main():
  vowels = ['a', 'e', 'i', 'o', 'u', 'y']
  pigFile = open('pigTest.txt', 'r')
  pigOut = open('pigOut.txt', 'w')
  for line in  pigFile.readlines():
    pigList = line.split()
    t = translate(pigList, vowels)
    print("Input: ", pigList)
    print("Converted: ", t)
    w = write(t, pigOut)
  pigFile.close()

def translate(pigList, vowels):
  newPigList = []

  for word in pigList:
    if word[0] in vowels: # if the first index of the first word is a vowel
      newPigList.append(word + "way") #add to new list
    else: #if letter does not begin with vowel
      newPigList.append(word[1:] + word[0] + "ay") 

  return newPigList

def write(pigList, pigOut):
  pigOut.write(" ".join(pigList))

main()

相关问题 更多 >