我有一個 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}
...
uj5u.com熱心網友回復:
我將為此利用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的名稱中沒有,則列印所述行。由于行確實已經有了我end=""在print.
uj5u.com熱心網友回復:
我自己沒有將它與泰語字串一起使用,但您可以嘗試使用函式isalpha()。如果所有字符都在 (az) 字母表中,這應該回傳 true。
if row["name"].isalpha():
# english
else:
# thai
注意:以這種方式使用它會過濾掉所有非英語的東西,它不是泰語特有的。不確定這對你來說是否有問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/376099.html
下一篇:帶會話的SQL查詢
