如何将单行长字符串的各个部分拆分为多个对象?

问题描述 投票:0回答:1

我正在尝试使用 Python 来处理游戏中的一些数据。

我想要的和我正在提取的数据来自一个很长的 .lua 文件,并且都在一行中。我想将包含数据的这一长行分成多个段/为该行中包含的数据创建一个表或 json。

我尝试用谷歌搜索一下,但我发现的结果只是将“简短的 blablabla 句子与 “手动添加新行指示器。这不是我需要的,我需要一种方法将我的一大行数据的一部分拆分为我可以使用的单个对象。

该行是这样开始的,示例包含我想要提取的前 4 组数据:

[start of line]select(2, ...).LoadData("AUCTIONDB_REALM_DATA","Lakeshire-Alliance",[[return {downloadTime=1718680714,fields={"itemString","minBuyout","numAuctions","marketValueRecent"},data={{41444,2NSF,4,2SOM},{52106,2UN5,L,2UN5},{8188,1534,6,1534},{12013,NAHJ,3,NAHJ},[even more data]

我想要处理的数据是在

data={
下面的每个对象都位于包含 4 个不同值的一对新的 {} 中。 在最后一个对象之后,该行将关闭
}}]]) --<AUCTIONDB_REALM_DATA,Lakeshire-Alliance,1718680714>

将 Pastebin 粘贴到整行:https://pastebin.com/XpJZuznk

python scripting formatting string-formatting
1个回答
0
投票

这是 re 模块的一个很好的例子,您可以在其中定义您感兴趣的数据模式,并让 re 完成所有艰苦的工作。

例如:

import re
from pathlib import Path

with Path("~/Downloads/XpJZuznk.txt").expanduser().open(mode="r") as fd:
    for e in re.findall(r"\{\w+,\w+,\w+,\w+\}", fd.read()):
        print(e)

这揭示了 7,590 个物体。这是此代码输出的尾部:

{4832,2D7J3U,1,2D7J3U}
{1405,0,1,0}
{2912,28L4J,1,28L4J}
{24637,EAU9,1,EAU9}
{25163,GUNQ,1,GUNQ}
{2883,0,1,0}
{14457,20JL8,1,20JL8}
{25220,1NTRCG,1,1NTRCG}
{14258,1QFR,1,1QFR}
{9936,B27N,1,B27N}
{10377,1OJ04,2,1OJ04}
{8301,1P328,1,1P328}
{31276,B4IUN,1,B4IUN}
{25291,16V5V,1,16V5V}
{36181,QM4L,1,QM4L}
{15324,N1BU,2,N1BU}
© www.soinside.com 2019 - 2024. All rights reserved.