繁体   English   中英

如何在 python 中的空格后读取文本文件的每一行

[英]How to Read text file each line after space in python

现在我得到了这样的文本文件

Mary Apple
Tom Pear
Harry Banana 
..

我期望的是:

x = [ry, m, rry, ...] 
c = [Apple, Pear, Banana, ...]

如何将水果放入列表 c 并将名称(仅从第三个字母开始)放入列表 x?

这是我的代码,但它不起作用

with open("file.txt") as f:
    data = f.readlines()
    for i in data:
        x = (i.split()[0])
    for i in data:
        c = (i.split()[1])

你不能同时得到ryomrry 就像你可以通过使用切片[2:]ry m一样。 您当前的输入和 output 逻辑没有意义。 但是,您可以尝试以下操作:

x = []
c = []
with open("file.txt") as f:
    data = f.readlines()
    for i in data:
        x.append(i.split()[0][2:]) #ry, m, rry
        c.append(i.split()[1])
print(x,c)

您也可以使用列表理解,但这只会导致您返回两个循环。 我建议为此使用字典:

with open("file.txt") as f:
    data = f.readlines()
    values = {i.split()[0]:i.split()[1]  for i in data}
print(values)
# Output: {'Mary': 'Apple', 'Tom': 'Pear', 'Harry': 'Banana'}

就这样做:

with open("file.txt") as f:
    data = f.readlines()

    x = []
    c = []
    for i in data:
        line = i.split()
        x.append(line[0][2:])
        c.append(line[1])

顺便说一句,它的[ry, m, rry] om来自Tom的。

with open("file.txt") as f:
    lines = f.read().splitlines() 
    x = []
    c = []
    for line in lines:
        data = line.split(" ")
        name = data[0]
        fruit = data[1]

        c.append(fruit)

        if len(name) < 4:
            x.append(name[len(name) // 2:])
        else:
            x.append(name[2:])

    print(x) # ['ry', 'om', 'rry']
    print(c) # ['Apple', 'Pear', 'Banana']

看起来@TheMyth 几乎明白了,但没有清除尾随换行符\n的结果。 编辑:没关系,@TheMyth 是对的。

以下实现了这一点:

x = []
c = []

with open("file.txt") as f:
    data = f.readlines()
    for i in data:
        x.append(i.split(' ')[0][2:])
    for i in data:
        a = i.split(' ')[1]
        c.append(a.split('\n')[0])

print(x)
print(c)

Output:

['ry', 'm', 'rry']
['Apple', 'Pear', 'Banana']

希望有帮助!

@神话在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM