python - 将字符串从 '\' 替换为 '/' Python
问题描述
我一直在努力处理一些需要在 Python 中简单更改\
为的代码。/
它是文件的路径-Python 不会以 Windows 的方式读取文件的路径,所以我只想更改 Python 的 Windows 路径以正确读取文件。
我想从游戏中解析一些文本来统计统计数据。我这样做:
import re
pathNumbers = "D:\Gry\Tibia\packages\TibiaExternal\log\test server.txt"
pathNumbers = re.sub(r"\\", r"/",pathNumbers)
fileNumbers = open (pathNumbers, "r")
print(fileNumbers.readline())
fileNumbers.close()
但我回来的错误是
----> 6 fileNumbers = open (pathNumbers, "r") OSError: [Errno 22] Invalid argument: 'D:/Gry/Tibia/packages/TibiaExternal\test server.txt'
问题是,该函数re.sub()
和.replace()
,给出相同的结果——几乎完整的路径被替换,但最后一个要更改的字符始终保持不变。
您对此有什么解决方案,因为似乎更改这些字符对于 python 来说是一个敏感点。
解决方案
简单的回答:
如果您想在不同平台上使用路径,请将它们与
os.path.join(path,*paths)
这样,您根本不必使用不同的分隔符。
回答你打算做什么:
实际的问题是,您的pathNumbers
变量不是原始r
的(定义前导),这意味着反斜杠被用作转义字符。在大多数情况下,这不会改变任何内容,因为与以下字符的组合没有任何意义。\t
是制表符,\n
将是换行符,所以这些不再是简单的反斜杠字符。
所以简单地写
pathNumbers = r"D:\Gry\Tibia\packages\TibiaExternal\log\test server.txt"
推荐阅读
- python - Pandas 数据框的 Web 抓取
- azure - 无法使用 terraform/programmatic 将 Azure 密钥保管库与数据块集成
- amazon-web-services - Cloudformation 和 Codestar-Connections 问题
- graphql - 如何使用反应测试库模拟删除测试中的项目?
- java - 使对象的字段对于存储在数组列表中的每个对象都是唯一的
- microsoft-graph-api - MS Teams 个人选项卡不支持经典 SharePoint 页面?
- ruby - 为什么`which -a ruby`显示错误的路径?
- angular - 角度动态分配模板
- javascript - 开玩笑:toHaveBeenCalled 返回 0 而不是 1
- intellij-plugin - 如何从 github 存储库安装用于 intellij 的 Kotest 插件?