未接受的新行,初级Python

2024-04-25 18:49:17 发布

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

我的目标是制作一个程序,用于创建抽认卡和练习语言。现在我只想读入一个包含单词和翻译的.txt文件,从中创建一个列表,然后打印该列表。你知道吗

我是个编程初学者。你知道吗

我的问题是,当它打印列表时,它看起来是这样的:

att arbeta - travailler
att ga -  marcher
att tala
 -  parler

最后一个词夫妻总是一行低。应该是这样的:

att arbeta - travailler
att ga -  marcher
att tala -  parler

我的代码:


    wordList=[]

    def main ():
        buildList()
        for i in range(len(wordList)):
            print(wordList[i].returnPair())


    class wordCouple():
        def __init__(self, freWord, engWord):
            self.freWord = freWord
            self.engWord = engWord

        def returnPair(self):
            x = self.engWord + " - " + self.freWord
            return x

        def returnEng(self):
            return self.engWord

        def returnFre(self):
            return self.freWord

    def buildList():
        f=open("test.txt", "r")
        if f.mode == 'r':
            contents =f.read()
            data = contents.split("|")
            for i in range(len(data)): #I think the problem is here. Here I 
                wordSplit = data[i].split (",")
                wordList.append(wordCouple(wordSplit[0],wordSplit[1]))

        else:
            print("could not read text file")

    main()

这就是测试.txt我在程序中使用的文件看起来像。你知道吗

travailler, att arbeta| marcher, att ga| parler, att tala

Tags: selftxt列表returndefattgawordlist
1条回答
网友
1楼 · 发布于 2024-04-25 18:49:17

当您读入数据行时,它的末尾有一个换行符;当您.split()得到这个结果时,这些部分中的最后一个(这里,parler, att tala)仍然在结尾有一个换行符;因此,当您再次拆分它时,您仍然在att tala上有一个换行符(还有前导空格)。你知道吗

使用字符串的.strip()方法删除前导和尾随空格-它会生成一个新字符串(不能就地修改字符串)。你知道吗


但当你注意到我的时候:

for i in range(len(wordList)):
    print(wordList[i].returnPair())

不要这样做;如果有人教你这样做,不要再听那个人或消息来源的话;如果是你自己提出的,那就回顾一下你的理解和推理。在Python中,for循环已经直接为您提供了底层iterable(这里是wordList)的内容;使用这样的代码,您将不遗余力地使事情变得更加困难。你想要的是:

for word in wordList:
    print(word.returnPair())

也就是说:你直接问每个word并使用它,而不是问有多少个单词,然后算出从0到该计数(不包括在内)的所有数字,然后分别问这些数字,最后用这些数字来抓取单词。简单:)

相关问题 更多 >

    热门问题