如何从.txt fi将特定文本保存在数组中

2024-10-02 12:32:18 发布

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

我有一个.txt文件,我只想在数组中保存以下字符“N”、“1.1”、“XY”、“N”、“2.3”、“xz”。 .txt文件如下所示:

[   TITLE

    N 1.1 XY
    N 2.3 XZ

]

这是我的密码:

src = open("In.txt", "r")

def findOp (row):
    trig = False
    temp = ["", "", ""]
    i = 1
    n = 0
    for char in row:  
        i += 1
        if (char != '\t') & (char != ' ') & (char != '\n'):
            trig = True
            temp[n] += char
        else:
            if trig:
                n += 1
                trig = False

    return temp

for line in src.readlines():
print(findOp(line))

我的代码的输出是:

['[', 'TITLE', '']
['', '', '']
['N', '1.1', 'XY']
['N', '2.3', 'XZ']
['', '', '']
[']', '', '']

问题是程序还保存了一个数组中的空白字符,我不想。你知道吗


Tags: 文件srctxtfalsefortitle数组字符
3条回答

我建议使用trim()-函数,您可以从字符串中删除空白

两边空白:

s = s.strip()

右侧空白:

s = s.rstrip()

左侧空白:

s = s.lstrip()

您可以在退出之前检查返回数组:

def findOp(row):
    trig = False
    temp = ["", "", ""]
    i = 1
    n = 0
    for char in row:
        i += 1
        if (char != '\t') & (char != ' ') & (char != '\n'):
            trig = True
            temp[n] += char
        else:
            if trig:
                n += 1
                trig = False

    # Will return `temp` if all elements eval to True otherwise
    # it will return None        
    return temp if all(temp) else None

None可以用作后续构造中的检查条件:

for line in src.readlines():
    out = findOp(line)
    if out:
        print(out)

>> ['N', '1.1', 'XY']
>> ['N', '2.3', 'XZ']

试试^{}

import numpy as np
text_arr = np.genfromtxt('In.txt', skip_header = 1, skip_footer = 1, dtype = str)
print(text_arr)

输出:

[['N' '1.1' 'XY']
 ['N' '2.3' 'XZ']]

或者,如果您想要列表,请添加text_arr.tolist()

相关问题 更多 >

    热门问题