【问题标题】:remove rows with non english item in json files using python使用python删除json文件中非英语项目的行
【发布时间】:2022-01-11 19:36:04
【问题描述】:

我有一个 json 文件 (data.json),其中包含 json 格式的数据行。我想遍历每一行并使用python删除名称部分下包含泰语的数据行。我可以知道该怎么做吗?谢谢

输入:

{"name":"John", "age":30, "car":audi}
{"name":"สมศักดิ์", "age":25, "car":mercedes}
{"name":"อาทิตย์", "age":49, "car":bently}
{"name":"Mark", "age":20, "car":null}
...

输出:

{"name":"John", "age":30, "car":audi}
{"name":"Mark", "age":20, "car":null}
...

【问题讨论】:

  • 到目前为止你的代码是什么?
  • 我们不是您的个人代码编写服务。向我们展示您当前代码的minimal reproducible example,包括说明您在当前尝试中具体遇到的问题。也请熟悉How to Ask

标签: python json dataframe


【解决方案1】:

我自己没有用过泰语字符串,但你可以试试函数isalpha()。如果所有字符都在 (a-z) 字母表中,这应该返回 true。

if row["name"].isalpha():
    # english
else:
    # thai

注意:以这种方式使用它会过滤所有非英语的内容,它不是特定于泰语的。不确定这对您来说是否有问题。

【讨论】:

    【解决方案2】:

    我将为此使用unicodedata 内置模块,如下所示,假设您有file.txt,其内容如下

    {"name":"John","age":30,"car":"audi"}
    {"name":"สมศักดิ์","age":25,"car":"mercedes"}
    {"name":"อาทิตย์","age":49,"car":"bently"}
    {"name":"Mark","age":20,"car":null}
    

    然后

    import json
    import unicodedata
    with open("file.txt",encoding="utf-8") as f:
        for line in f:
            name = json.loads(line)["name"]
            if "THAI" not in unicodedata.name(name[0]):
                print(line, end="")
    

    输出

    {"name":"John","age":30,"car":"audi"}
    {"name":"Mark","age":20,"car":null}
    

    免责声明:我假设每一行都是合法的 JSON,其中包含一些 name。说明:我遍历行,对于行,我使用 json.loads 解析它并获取 name 然后使用 unicodedata 我得到第一个字符的 Unicode 名称,如果它的名称中没有 THAI,则打印所述行。由于行已经有了换行符,我在print 中使用了end=""(空字符串)。

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 1970-01-01
      • 2020-09-05
      • 2021-11-10
      • 1970-01-01
      • 2013-08-11
      • 2021-04-09
      • 2022-11-02
      • 1970-01-01
      相关资源
      最近更新 更多