解析 JSX 文件以提取 Import 语句的属性

2024-04-15

有一个 jsx 文件,其中包含内容

<import name="abcd" color="green" age="25" />
<View color={dsdssd}>
    <IBG
        color={[color.imagecolor, color.image125]}
        imageStyle={[styles.imageStyle, styles.image125]}
        source={{ uri: contents.aimeecard }} >
        <View color={styles.titleContainer}>
            <Text color={[{green: 45}, styles.mainTileText]}</Text>
            <View color={[abcde.text]} />
        </View>
</View>

我需要使用 python 脚本获取第一行的详细信息: 预期产出 名称=“abcd” 颜色=“绿色” 年龄=“25”

jsx文件的路径也是通过list传递的 例如:[abcd/file1.jsx,dcef/file2.jsx]

Python代码尝试通过列表获取jsx文件

for file in jsx_path:
   data = md.parse("file")
   print( file.firstChild.tagName )

未获取值并出现错误。

谁能帮我解决这个问题?


假设jsx_path是包含 jsx 文件的所有路径的列表,您可以迭代每个文件并使用上下文管理器来避免显式关闭文件,如下所示:

data = ""

for file in jsx_path:
    with open(file) as f:
        data += f.readline()[8:-4] + "\n"

print(data)  # name="abcd" color="green" age="25"

根据您的评论,如果您想将其输出为字典,您可以调整前面的代码:

import re

data = []

for file in jsx_path:
    with open(file) as f:
        data.append(re.split('\W+|=', f.readline()[8:-4]))

data_dict = []

for d in data:
   data_dict.append({key:value for (key, value) in zip(d[::2], d[1::2])})

print(data_dict)  # {'name': 'abcd', 'color': 'green', 'age': '25'}

请注意,这是一个黑客行为。我只按顺序读取 JSX 文件,因为您的用例足够简单,可以这样做。您还可以通过扩展 stlib 类来使用专用解析器HTMLParser:

from html.parser import HTMLParser

class JSXImportParser(HTMLParser):

    def handle_starttag(self, tag, attrs):
        if tag == "import":
            self._import_attrs = {key:value for (key, value) in attrs}

    @property
    def import_attrs(self):
        return self._import_attrs


parser = JSXImportParser()
data = []

for file in jsx_path:
    with open(file) as f:
        parser.feed(f.read())
        data.append(parser.import_attrs)
        print(data)  # [{'name': 'abcd', 'color': 'green', 'age': '25'}]

请注意,这仅提取每个文件中最后一个导入标签的详细信息,您可以通过调整_import_attrs类属性。

编辑:根据您关于使用 XML 解析器库的要求的附加评论,可以使用以下方法实现同样的事情ElementTree通过对文件进行采样以仅提取您感兴趣的内容(导入标签):

import xml.etree.ElementTree as ET

data = []

for file in jsx_path:
    with open(file) as f:
        import_statement = ET.XML(f.readline())
        data.append(import_statement.attrib)

print(data)  # [{'name': 'abcd', 'color': 'green', 'age': '25'}]

当然,这只适用于 import 语句位于第一行的情况,如果不是这种情况,则必须在调用之前先找到它ET.XML.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析 JSX 文件以提取 Import 语句的属性 的相关文章

  • python列表理解和extend() [重复]

    这个问题在这里已经有答案了 深入学习 Python 2 7 1 但未能理解这一点 几个小时 gt gt gt a 1 2 gt gt gt b 3 4 gt gt gt gt gt gt a extend b 0 gt gt gt a 1
  • 不要在异常堆栈中显示 Python raise-line

    当我在 Python 库中引发自己的异常时 异常堆栈将引发行本身显示为堆栈的最后一项 这显然不是一个错误 在概念上是正确的 但是当您在外部使用代码 例如作为模块 时 它会将重点放在对调试无用的东西上 有没有办法避免这种情况并强制 Pytho
  • 如何在 for 循环中跳过一些迭代

    在 python 中 我通常简单地循环遍历范围 for i in range 100 do something 但现在我想跳过循环中的几个步骤 更具体地说 我想要类似的东西continue 10 这样它就会跳过整个循环并将计数器增加 10
  • AWS Lambda - 在区域之间自动复制 EC2 快照?

    我想创建一个 Lambda 函数 python 它将自动将已创建的快照复制到另一个区域 我已联系 AWS Support 他们只向我发送了用于 RDS 数据库的 GitHub 脚本 没有 EC2 快照复制脚本 任何帮助都会很棒 谢谢 是的
  • 如何将当前日期分配给 odoo v8 中的日期字段?

    我想将当前日期分配给以下代码中的日期字段 start date calendar obj create cr uid name rec res act ion user id rec res asgnd to id start date l
  • 为什么通过selenium切换到alert不稳定?

    为什么通过selenium切换到alert不稳定 例如 1 运行代码 一切顺利 一切都很顺利 但如果这段代码在几分钟内运行 那么可能会出现错误 例如 没有可以单击的元素 等等 2 在一个站点上有一个警报窗口 alert driver swi
  • Unpickle 二进制文件为文本[重复]

    这个问题在这里已经有答案了 我需要对基本上如下所示的系统进行一些维护 复杂的遗留Python程序 gt 二进制pickle文件 gt 另一个复杂的遗留Python程序 这需要准确弄清楚中间 pickle 文件中的内容 我怀疑文件格式比生成和
  • Python lmfit:拟合 2D 模型

    我正在尝试将二维高斯拟合到一些灰度图像数据 该数据由一个二维数组给出 lmfit 库实现了一个易于使用的模型类 它应该能够做到这一点 不幸的是文档 http lmfit github io lmfit py model html http
  • 在用户提交的正则表达式中查找捕获组

    我有一个 python 应用程序 需要处理用户提交的正则表达式 出于性能考虑 我想禁止捕获组和反向引用 我的想法是使用另一个正则表达式来验证用户提交的正则表达式不包含任何命名或未命名的组捕获 如下所示 def validate user r
  • 在 Django 1.9 中使用信号

    在 Django 1 8 中 我能够使用信号执行以下操作 一切顺利 init py from signals import 信号 py receiver pre save sender Comment def process hashtag
  • Python 字符串参数解析

    我正在 python 中使用 cmd 类 它将所有参数作为一个大字符串传递给我 将此 arg 字符串标记为 args 数组的最佳方法是什么 Example args arg arg1 arg2 with quotes arg4 arg5 1
  • 在react-native中将本地图像uri作为props传递

    我正在尝试将图像的 uri 作为 prop 传递 以便我可以在 React Native 上多次重复使用它 但是 当前的解决方案提示我 require 应该使用字符串文字 const ImageButton source gt
  • 如何通过pygit2获取当前签出的Git分支名称?

    这个问题应该与 如何获取Git中当前的分支名称 https stackoverflow com questions 6245570 how to get current branch name in git 获取 git 当前分支 标签名称
  • 对二进制数的字符串表示进行按位运算 python 2.7

    我想对二进制数的两个字符串表示执行按位或 但我不知道如何将字符串转换为原始二进制 a 010110 b 100000 a b 应该产生 110110 然后我想计算 on 位的数量 这应该返回 4 您可以使用内置的将字符串转换为二进制int
  • Mac OS 上的 pybluez 安装错误

    我尝试安装pybluez使用以下命令 pip install pybluez sudo easy install pybluez 但对于这两个命令我最终都会出错 环境 Mac OSX 10 9 1 Python 2 7 点日志 cc fno
  • Scrapy文件下载如何使用自定义文件名

    For my scrapy http doc scrapy org index html我目前正在使用的项目文件管道 https doc scrapy org en latest topics media pipeline html scr
  • Python 中的“lambda”是什么意思,最简单的使用方法是什么?

    您能否给出一个示例和其他示例来说明何时以及何时不使用 Lambda 我的书给了我一些例子 但它们很令人困惑 拉姆达 起源于拉姆达演算 http en wikipedia org wiki Lambda calculus和 AFAIK 首先实
  • 如何加速Python循环

    我查看了几个网站上的一些讨论 但没有一个给我解决方案 这段代码运行时间超过5秒 for i in xrange 100000000 pass 我正在研究整数优化问题 我必须使用O n log n 算法编辑 O n 4 算法 其中n代表矩阵的
  • Snakemake根据字典输入和输出

    我正在尝试重命名 Snakemake 管道中的一些文件 假设我有三个文件 FileA txt FileB txt FileC txt 我希望根据字典重新命名它们dict A 0 B 1 C 2 to get RenamedFile0 txt
  • 在大型文本文件中查找重复记录

    我在一台 Linux 机器 Redhat 上 并且有一个 11GB 的文本文件 文本文件中的每一行包含单个记录的数据 并且该行的前 n 个字符包含该记录的唯一标识符 该文件包含略多于 2700 万条记录 我需要验证文件中不存在具有相同唯一标

随机推荐

  • 为什么编译超过 100,000 行的 std::vector::push_back 需要很长时间?

    我正在编译一个 C 库 它定义了一个从一组数据点中随机采样的函数 数据点存储在std vector 有 126 272std vectorPush back 语句 其中所讨论的向量的类型double 编译需要很长时间 为什么这需要这么长时间
  • 如何使用 JSON URL

    我有一个 JSON 对象 看起来像这样 以下链接是假的 results urlStuff pic url http www youtube com inside kslkjfldkf 234 jpg v 7475646 other pic
  • 如何创建一个全局的、可变的单例?

    创建和使用系统中只有一个实例化的结构体的最佳方法是什么 是的 这是必要的 它是 OpenGL 子系统 制作它的多个副本并将其传递到各处会增加混乱 而不是缓解混乱 单例需要尽可能高效 似乎不可能在静态区域上存储任意对象 因为它包含Vec与析构
  • UWP 中的串行设备通信问题

    我有一个特殊的问题 我正在尝试与 UWP 项目中需要串行通信的外围单元进行通信 我在用Windows Devices SerialCommunication 为了演示目的 我创建了一个新页面 其中有两个按钮 以及两个不同的单击处理程序 一个
  • Google 云存储 - 权限不足

    这个问题似乎与另一篇文章相似 但对我来说不同 因为我检查了testIamPermission 回报显示我获得了所需的所有许可并且仍然收到权限不足 这是我收到的 storage buckets get true storage buckets
  • 从抽象父类调用通用类型列表上的方法

    这是我当前的类型层次结构 我正在尝试实现一种方法PlaneRegion这将调用一个名为的方法Shift 在其派生类的列表上 其中该列表在所有列表中都称为 PlaneBoundaries 但它们具有不同的类型 like so public a
  • 如何在 Tensorflow 2.0 中使用嵌入投影仪

    随着 tf contrib 模块从 Tensorflow 中消失 并且 tf train Saver 也消失 我无法找到一种方法来存储一组嵌入及其相应的缩略图 以便 Tensorboard Projector 可以读取它们 The 张量板文
  • 与编程语言/API 相关的常用“语义”的简单定义?

    今天我突然想到 虽然我在提到语言元素和命名约定时已经采用并且不经常使用 语义 一词 但我对正式定义没有任何感觉 我试图在编程领域找到一个正式的定义 http en wikipedia org wiki Formal semantics of
  • 为什么鼠标滚轮事件的目标属性与其他(click、mousedown、touchstart)事件的目标属性不同?

    鼠标滚轮事件target属性提供在操作鼠标滚轮 或支持手势的触摸板 时鼠标当前悬停在其上的 DOM 元素 当我这样做时 至少在 Safari 6 中 我稍后会测试其他浏览器 我将得到文本节点本身target 即使我直接在文本上执行操作 其他
  • 首先是 DDD 数据库。如何处理聚合

    我正在尝试学习 DDD 的概念 我做了一个项目 我使用数据库优先方法 在基础设施中 我添加了一个 edmx 文件 我选择自动生成实体 现在在 域 中我正在尝试创建聚合 但在这里我遇到了一些问题 我正在尝试创建一个名为 User 的聚合 但
  • 如何为这个业务逻辑代码编写可靠的单元测试?

    我有一些想要测试的业务逻辑代码 目前我只知道如何对没有其他依赖项的逻辑代码编写单元测试 有人能给我指出如何测试这个函数的好方向吗 也许可以举个例子 测试这个的唯一方法是集成测试还是我必须使用模拟 存根
  • 安装旧版本的 gcc [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想在我的 Ubuntu 64 位系统上安装 gcc 4 1 2 该系统当前有 gcc 4 4 我想继续使用当前的 gcc 但也想添加 gcc 4 1
  • Swagger - 时间戳奇怪的表示

    我有 Spring Boot 控制器 为了方便 API 参考 我使用了 Swagger 关于问题timestamp 为什么在生成的文档示例中看起来像 timestamp date 0 day 0 hours 0 minutes 0 mont
  • UWP 网格填充父窗口

    我们正在进行一个学校项目 但陷入了死胡同 我们正在努力使grid填充整个父窗口 但我们根本无法这样做 This is what the designer shows and how we want it to look And this i
  • 如何从 Twitter Bootstrap 和 Bloodhound 建议中获取 id 和 value?

    选择建议时如何从 typeahead js 获取 id 和 value 我有一个 json 如下 id 1 name paul id 2 name jim id 3 name tom id 4 name medor id 5 name ja
  • Maven jdepend 循环构建失败

    当包循环存在时 有没有办法使用 maven 中的 jdepend 插件来使构建失败 我知道你可以用 ant 很容易地做到这一点 但我还没有弄清楚如何用 Maven 做到这一点 谢谢 杰夫 根据已接受的答案 我改进了性能和日志输出 并将其发布
  • 为什么 CompareTo 这么短地实现?

    考虑以下代码 namespace ConsoleApplication1 class Program static void Main string args Console WriteLine 100 CompareTo 200 prin
  • 如何获取启动进程的命令行

    从 Java 中 是否可以获得包含启动应用程序的所有参数的完整命令行 System getEnv and System getProperties 似乎不包含这些值 其中一些可以从 RuntimeMXBean 获得 通过调用获得Manage
  • Jenkins 管道到 Excel 电子表格

    我有一个每天运行 sql 计数的管道 作为回归测试的一部分 我希望能够将每个构建的结果导出到一个 excel 文档中 在其中可以存储和比较结果 这可能吗 提前致谢 None
  • 解析 JSX 文件以提取 Import 语句的属性

    有一个 jsx 文件 其中包含内容