合并文件时的奇怪输出

2024-04-24 08:45:08 发布

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

对于输出,我需要一个列表,其中每个索引包含一个数字和一个字母,它们来自两个不同的文件(如B2)。相反,当我运行我的程序时,我得到的输出在不同的行上列出每个文件的值。其中一个输入文件是简单的数字列表,另一个是字母列表。根据我的代码,我希望能得到一些帮助。提前谢谢!你知道吗

def combine():
    mylist = []
    galaxy = open("galaxies.rtf","r")
    print("Reading from galaxies.txt...")
    for line in galaxy:
        gline = galaxy.read()
    cycle = open("cycles.rtf","r")
    print("Reading from cycle.txt...")
    for line in cycle:
        cline = cycle.read()
    print("Combining values...")
    string = gline + cline
    mylist.append(string)
    galaxy.close()
    cycle.close()
    return mylist
combine()

# the main function calls combine() to read the data from files
# then displays a formatted table with the combined values
def main():
#Print a header at start of main() function
    print("Report of BOOYA Radio Galaxy Observations\n")
 # Call the combine() function, returned list saved as radioData
    radioData = combine()
# Loop through the radioData list printing 5 columns of values
    for j in range(0,len(radioData),5):
        for k in range(0,5):
            print(radioData[j+k],end="\t")
        print()
main()

Tags: 文件theinfrom列表forreadmain
1条回答
网友
1楼 · 发布于 2024-04-24 08:45:08

你有几个问题。例如,这个

for line in galaxy:
    gline = galaxy.read()

galaxy读取一行并将其放入line,然后读取文件的其余部分并将其放入gline。在第二轮中,文件没有更多内容,因此for退出。你知道吗

你可以用不同的方法做这项工作。文件迭代包含\n的行。zip接受多个迭代器并将它们组合成元组。您可以使用它来迭代这两个文件中的行,去掉行尾并将它们添加到一起。你知道吗

>>> with open('galaxies.rtf') as f1, open('cycles.rtf') as f2:
...     mylist = list((l1.strip() + l2.strip() for l1, l2 in zip(f1, f2)))
... 
>>> mylist
['A1', 'B2', 'C3', 'D4', 'E5', 'F6']

这可能仍然是个问题,因为rtf不是简单的文本文件。你知道吗

相关问题 更多 >