1

私は次のコードを持っています:

import re

key = re.escape('#one #two #some #tests #are #done')
print(key)
key = key.split()
print(key)

および次の出力:

\#one\ \#two\ \#some\ \#tests\ \#are\ \#done
['\\#one\\', '\\#two\\', '\\#some\\', '\\#tests\\', '\\#are\\', '\\#done']

バックスラッシュが重複しているのはなぜですか?このリストを正規表現で使用したいので、リストに一度だけ入れたいと思います。

前もって感謝します!ジョン

4

4 に答える 4

1

バックスラッシュはそれぞれ 1 つしかありませreprんが、文字列を出力するときは、文字列を使用して正規表現を作成するときにそれらを複製する必要があるのと同じように、それらを複製 (エスケープ) します。だからすべてが大丈夫です。

例えば:

>>> len("\\")
1
>>> len("\\n")
2
>>> len("\n")
1
>>> print "\\n"
\n
>>> print "\n"


>>>
于 2012-08-31T22:07:23.933 に答える
1

\ 文字はエスケープ文字であり、後続の文字の意味を変更する文字です。たとえば、「n」文字は単に「n」です。ただし、「\n」のようにエスケープすると、「改行」文字になります。したがって、\ リテラルを使用する必要がある場合は、... 自体でエスケープする必要があります: \\

于 2012-08-31T22:12:58.220 に答える
0

When you convert a list to a string (e.g. to print it), it calls repr on each object contained in the list. That's why you get the quotes and extra backslashes in your second line of output. Try this:

s = "\\a string with an escaped backslash"
print s       # prints: \a string with an escaped backslash
print repr(s) # prints: '\\a string with an escaped backslash'

The repr call puts quotes around the string, and shows the backslash escapes.

于 2012-08-31T22:16:48.077 に答える
0

バックスラッシュは重複しません。これを実現するには、次のことを試してください。

for element in key:
    print element

そして、次の出力が表示されます。

\#one\
\#two\
\#some\
\#tests\
\#are\
\#done

リスト全体を印刷すると、Python は文字列がそのままではなく印刷される表現を使用しましたが、Python 式として印刷されます (引用符 "" に注意してください。文字列には含まれていません)。

バックスラッシュを含む文字列を実際にエンコードするには、そのバックスラッシュを複製する必要があります。それだ。

于 2012-08-31T22:08:09.697 に答える