首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用混合unicode字符从文件中读取并替换字符串(python)

使用混合unicode字符从文件中读取并替换字符串(python)
EN

Stack Overflow用户
提问于 2022-03-06 12:37:04
回答 1查看 81关注 0票数 1

以下是文件内容:

代码语言:javascript
运行
复制
H\u00f6gskolan
Högskolan

(注:\u00f6实际上是ö)

我希望将所有ö字符替换为o,并将其保存到一个新文件中。常规字符串替换不像预期的那样工作。

代码语言:javascript
运行
复制
with open("test.txt", encoding="utf-8") as f:
  content = f.read()
replacedContent = content.replace("ö", "o")
with open("testOutput.txt", "w", encoding="utf-8") as f:
  f.write(replacedContent)

testOutput.txt文件内容:

代码语言:javascript
运行
复制
H\u00f6gskolan
Hogskolan

我找到了一个similar question,但它的解决方案也不起作用:

代码语言:javascript
运行
复制
import codecs

with open("test.txt", encoding="utf-8") as f:
    content = f.read()
content = codecs.decode(content, "unicode_escape")
replacedContent = content.replace("ö", "o")
with open("testOutput.txt", "w", encoding="utf-8") as f:
    f.write(replacedContent)

testOutput.txt文件内容:

代码语言:javascript
运行
复制
Hogskolan
Högskolan

知道如何做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-06 13:26:51

我找不到任何已经处理您请求的库函数,所以我只需要用regex解析原始unicode签名并用它们的实际值替换它们。

代码语言:javascript
运行
复制
import re


def convert_mixed(from_file, to_file):
    f = open(from_file, "r")
    content = f.read()
    f.close()
    for x in re.findall(r"\\u([\da-f]{4})", content):
        content = content.replace(f"\\u{x}", chr(int(x, 16)))

    f = open(to_file, "w")
    f.write(content.replace("ö", "o"))


convert_mixed("file.txt", "out.txt")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71370327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档