Попытка создать для l oop, который проверяет мое имя файла на наличие обратных косых черт и заменяет их косыми чертами - PullRequest
1 голос
/ 16 июня 2020

Как упоминалось в заголовке, я пытаюсь создать функцию для анализа строки, которая будет моим именем файла и вернуть другую версию, но со всеми обратными косыми чертами, замененными косыми чертами. Мои имена файлов сохраняются с обратной косой чертой вместо прямой и, следовательно, не работают, если я не использую 'r' перед именем файла. Я знаю, что это простой обходной путь, но теперь меня интересует определение функции для исправления этого решения.

Вот код, который я пытаюсь использовать:

backslash = '\''

def parser(string, character):
    letters = []
    for i in string:
        if i != character:
            letters.append(i)
        else:
            letters.append('/')

    return letters

Это мой результат , что явно неверно. Есть ли у кого-нибудь идеи, как я могу исправить свою проблему или способ обойти это?

[B',
 'o',
 'b',
 '\\',
 'g',
 'o',
 'e',
 's',
 '\\',
 's',
 'h',
 'o',
 'p',
 'p',
 'i',
 'n',
 'g']

ps. Если это имеет значение, я использую windows 10 и Microsoft.

Ответы [ 2 ]

1 голос
/ 16 июня 2020

backsla sh - это escape-символ, поэтому, если вы хотите иметь буквальный backsla sh в строке, вам нужно использовать двойной backsla sh

Вот решение:

backslash = '\\'

def parser(string, character):
    letters = []
    for i in string:
        if i != character:
            letters.append(i)
        else:
            letters.append('/')

    return letters

enter image description here

1 голос
/ 16 июня 2020

Символ backsla sh (\) используется для экранирования символов, которые иначе имеют особое значение, таких как новая строка, backsla sh или символ кавычки

Ваш backsla sh символ содержит ', что неверно. Чтобы ваша переменная содержала сам литерал backsla sh, вы должны использовать две backsla sh, как указано в приведенном ниже коде.

Следующий код анализирует правильно -

backslash = '\\'

def parser(string, character):
    letters = []
    for i in string:
        if i != character:
            letters.append(i)
        else:
            letters.append('/')

    return letters

# The address location to be parsed
address_with_backslash = 'C:\\user\\something\\InvestingScientist'

print("Original address : " + address_with_backslash)
print("\nAddress after Parsing : " + "".join(parser(address_with_backslash,backslash)))

Вывод:

Original address : C:\user\something\InvestingScientist

Address after Parsing : C:/user/something/InvestingScientist

Надеюсь, это поможет!

...