簡體   English   中英

在 Python 中,如何在列表中包含單個反斜杠元素?

[英]In Python, how do I have a single backslash element in a list?

首先,我在 windows 10 上運行 Python 3.6。

python 中的反斜杠字符是一個特殊字符,充當字符串的“轉義符”。 因此,它不能直接打印。 如果我想打印單個反斜杠,這樣做是行不通的:

print("\") #error message

解決這個問題的方法是簡單地添加另一個反斜杠,如下所示:

print("\\") #\

到目前為止,一切都很好。 但是,當您創建一個字符串元素列表時,如下所示:

list_of_strings = ['<','>','\u20AC','\u00A3','$','\u00A5','\u00A4','\\']
print(list_of_strings)

打印出以下內容:['<', '>', '€', '£', '$', '¥', '¤', '\\'] 這並不理想。 嘗試在字符串中僅使用一個反斜杠 ('\') 將導致與開頭提到的相同的 EOL 錯誤。 如果您嘗試使用其 unicode (u005C) 的單個實例直接打印出反斜杠,如下所示:

print(['<','>','\u20AC','\u00A3','$','\u00A5','\u00A4','\u005C'])

output 仍然有一個雙斜杠:['<', '>', '€', '£', '$', '¥', '¤', '\\']

我嘗試的另一件事是:

bs = "\\"
print(bs) #prints a single \
list_of_strings = ['a','b','c','d',bs]
print(list_of_strings) #prints ['a', 'b', 'c', 'd', '\\']

那么有沒有辦法讓我能夠設置它以便將單個反斜杠作為列表中的字符串元素打印出來?

感謝您能給我的任何幫助!

是的,輸出總是有一個雙斜線,因為字符串對象就是這樣表示單斜線的。 當您打印列表時,列表__str____repr__方法使用對象__repr__方法來構建正在打印的內容。

但是如果你print(list_of_strings[-1])你會看到,它是一個單斜線。 為什么這很重要? 這里的關鍵是理解源代碼字符串文字之間的區別、對象的表示方式以及字符串對象的實際值是什么。

如果它真的困擾您,請編寫一個函數來自己打印列表:

>>> list_of_strings = ['<','>','\u20AC','\u00A3','$','\u00A5','\u00A4','\\']
>>> def print_list(l):
...     innards = ','.join(l)
...     print(f'[{innards}]')
...
>>> print_list(list_of_strings)
[<,>,€,£,$,¥,¤,\]
>>>

直接打印list對象應該主要用於調試。 每當您需要某些特定的輸出格式時,您都應該自己處理。

在 python 中打印列表時,在后台調用repr () 方法。 這意味着 print(list_of_strings) 本質上與以下內容相同(除了換行符):

>>> for element in list_of_strings:
...     print(element.__repr__())
... 
'<'
'>'
'€'
'£'
'$'
'¥'
'¤'
'\\'

實際上存儲的字符串是 '\\' 它只是表示為 '\\\\'

>>> for element in list_of_strings:
...     print(element)
... 
<
>
€
£
$
¥
¤
\

如果您像上面那樣單獨打印出每個元素,它將向您顯示文字值,而不是表示的值。

雙反斜杠是正確的方法。 它看起來像是打印出 2 個反斜杠,因此您可以將其復制/粘貼到另一個腳本中。 如果你輸入print(list_of_strings[-1]你只會看到 1 個反斜杠。這里實際上沒有問題。

出於某種原因,在列表中反斜杠 '\' 顯示為雙斜杠:

list_elements = []
string1 = "\\ string 1"
list_elements.append(string1)
print(list_elements)

>> ['\\ string 1']

但是當您訪問列表的元素時,它帶有一個反斜杠:

print(list_elements[0])

>> \ string 1

所以,如果你需要使用每個元素,你不會有任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM