只抓取一个林的内容

2024-10-02 00:41:09 发布

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

我有一个简单的问题:我只想从文件x中获取一行的内容。我的文件x如下所示:

PointXY
[387.93852, 200.0]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 353.20889]
PointXY
[387.93852, 200.0]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 300.0]

我的Python脚本如下所示:

h = open("x.gcode", "r")
searchlines = h.readlines()
file = ""

for i, line in enumerate(searchlines):
    if "PointXY" in line:
        P = searchlines[i+1]
        print(P)

我希望p就是[200.0100.0](例如)。它现在给我“[200.0,100.0]\n”。如何在“P=searchlines[I+1]”行中进行调整


Tags: 文件in脚本内容foriflineopen
3条回答

您正在查找每一行中的新行字符strip,这可以使用str的可用strip方法轻松完成:

searchlines中获取数据时,请执行以下操作:

searchlines[i+1].strip()

要查看它是否被实际删除,请检查repr

 print(repr(P))

您甚至可以在应用repr之前和之后进行strip()打印,以查看调用该条带时发生了什么

考虑到文本的结构,您希望将其列为一个列表,因此,您可以使用来自jsonloads来执行以下操作:

json.loads(searchlines[i+1].strip())

如果要删除'\n',请使用此

读取数据后

data = f.readlines()

data = map(str.strip, data)

但对另一个不是必须的你可以用这个:

import ast
listdata = []
with open('lel.txt') as f:
    data = f.readlines()
    for x in data:
        try:
            if isinstance(ast.literal_eval(x), list):
                listdata.append(eval(x))
        except:
            pass

那么对于获取列表的数据:

print listdata
>>>[[387.93852, 200.0], [200.0, 387.93852], [200.0, 387.93852], [200.0, 353.20889], [387.93852, 200.0], [200.0, 387.93852], [200.0, 300.0]]
print listdata[0]
>>>[387.93852, 200.0]
print listdata [0][0]
>>>387.93852

可以使用str.strip()删除\n

for i, line in enumerate(searchlines):
    if "PointXY" in line:
        P = searchlines[i+1].strip()
        print(P)

相关问题 更多 >

    热门问题