Ответ 1
Вам просто нужно избежать обратных косых черт в ваших строках: (также нет необходимости в материалах регулярных выражений)
>>> s = "cats \\ dogs"
>>> print s
cats \ dogs
>>> print s.replace("\\", "\\\\")
cats \\ dogs
Кто-нибудь знает, как заменить все \
на \\
на python?
Ive попытался:
re.sub('\','\\',string)
Но он закручивает его из-за escape-последовательности. кто-нибудь знает оленя на мой вопрос?
Вам просто нужно избежать обратных косых черт в ваших строках: (также нет необходимости в материалах регулярных выражений)
>>> s = "cats \\ dogs"
>>> print s
cats \ dogs
>>> print s.replace("\\", "\\\\")
cats \\ dogs
вам следует:
re.sub(r'\\', r'\\\\', string)
Поскольку r'\'
не является допустимой строкой
Кстати, вы всегда должны использовать строки raw (r''
) с регулярным выражением, так как многие вещи выполняются с обратными косыми чертами.
Вам либо нужно re.sub("\\\\","\\\\\\\\",string)
, либо re.sub(r'\\', r'\\\\', string)
, потому что вам нужно избежать каждой косой черты дважды... один раз для строки и один раз для регулярного выражения.
>>> whatever = r'z\w\r'
>>> print whatever
z\w\r
>>> print re.sub(r"\\",r"\\\\", whatever)
z\\w\\r
>> print re.sub("\\\\","\\\\\\\\",whatever)
z\\w\\r
Вам следует избегать обратных косых черт, а также вам не нужно регулярное выражение для этой простой операции:
>>> my_string = r"asd\asd\asd\\"
>>> print(my_string)
asd\asd\asd\\
>>> replaced = my_string.replace("\\", "\\\\")
>>> print(replaced)
asd\\asd\\asd\\\\