【问题标题】:python split a string with special charcter [duplicate]python用特殊字符分割一个字符串[重复]
【发布时间】:2021-05-11 13:33:20
【问题描述】:

我需要像这样拆分我收到的字符串:

my_string = "\data\details\350.23.43.txt"

当我使用my_string.replace ("\\", "/")

它返回:/data/detailsè.23.43.txt

它将我的字符串中的\350 视为特殊字符'è'

【问题讨论】:

  • 你需要拆分还是替换?
  • 我需要拆分;但我尝试先替换它,但我需要拆分
  • 您要分割哪个字符 - `\`?
  • 如果您收到它,字符可能应该是好的,但如果您按上述方式指定它,那么是的,'\350' 将被字符串本身中的 'è' 替换。字符串从何而来?
  • 问题在于您的字符串文字,而不是您随后对该文字所做的操作。上面定义的my_string 根本不是您认为的字符串。例如,print(my_string) 打印 \data\detailsè.23.43.txt

标签: python python-3.x regex special-characters


【解决方案1】:

在您发表评论后编辑: 试试

my_string = r"\data\details\350.23.43.txt"

这是因为 \ooo 被解释为具有八进制值的字符,如 docs 中所述。

我想唯一的方法是逃避 \ 如:

my_string = "\data\details\\350.23.43.txt"

然后您可以执行以下操作:

my_string.split("\\")

你从哪里得到字符串?有没有办法影响它?

这看起来像一条路径。最好用

os.path.join("data", "details", "350.23.43.txt")

独立于操作系统创建路径。

【讨论】:

  • 问题是我收到它,我无法修改它
  • 尝试在你的字符串之前添加一个 r,就像我上面的编辑一样。
【解决方案2】:

\ 在字符串文字中被视为转义字符。这就是s1 = "line\nsecond line" 创建一个包含两行的字符串的原因。这也是您在my_string.replace ("\\", "/") 中使用"\\" 的原因。

因此,要解决您的问题,如果您使用的是字符串文字 my string = "\data\details\350.23.43.txt",您应该改用 "\\data\\details\\350.23.43.txt" 以确保您的 \ 被正确转义。或者,您可以通过将 r 添加到引号中来使用原始字符串 my string = r"\data\details\350.23.43.txt"。这样就没有任何东西可以逃脱(所以r"\n" 将是一个带有\n 的2 char 字符串,而不仅仅是一个新行字符)

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 2019-11-03
    • 2014-10-05
    • 1970-01-01
    • 2022-08-11
    • 2022-10-07
    • 1970-01-01
    • 2011-08-19
    • 2021-12-27
    相关资源
    最近更新 更多