python列表换行输出_Python从列表转换为字符串时处理换行符
我有一個關于換行符和返回字符的問題。呃,這很難解釋,但我會盡力的。
我有列表形式的數據。列表的成員中有換行符,因此。
1
2
3example_list = ["I've always loved jumping
"]
為了使用nlp-though-nltk標記這個句子,我需要一個字符串。當NLTK根據我運行的一些測試和NLTK教程中的證據標記化時,它將忽略換行符和其他轉義字符。
問題是,當我試圖將example_list轉換為字符串時,我得到了這個輸出
1
2
3
4str(example_list)
'["I\'ve always loved jumping\
\
"]'
注意,所有換行符現在都變成了一個轉義的正斜杠。嘗試將其標記化會產生一個可怕的結果,在這里,nltk認為跳轉是一個大單詞,因為它認為帶有兩個斜杠的換行符實際上是文本。
是否有人知道任何技巧或良好的實踐,以確保換行符從不存在于我的列表中,或者在轉換為字符串時忽略這些字符或不"雙轉義"。
最后,對于如何處理換行字符以及這些字符如何與不同的數據類型交互等相關的資料,是否有人有任何建議,因為它非常令人困惑。
謝謝!
您可以使用strip()刪除等。
stackoverflow.com/questions/21325212/…的可能副本?
@巴格夫勞,你為什么刪除了行動黨的自我回答?
@亞歷克西斯,部分是我的錯,我把它標記為不是答案,因為它只是鏈接。投票取消刪除。
您正在解決錯誤的問題:從您顯示的輸出中可以清楚地看到,您在一個實際包含方括號、引號和反斜杠的文件中讀取的內容。換句話說,這些不是新行,而是實際的\和n序列。這里有一個(三重引用,原始)字符串,可以重現您的問題:
1
2
3
4
5
6
7>>> mess = r'''["I've always loved jumping
"]'''
>>> str(mess)
'["I\'ve always loved jumping\
\
"]'
當然,您沒有將數據放在原始字符串中;您是通過讀取一個您自己創建的文件得到的,如下所示:
1
2with open("newfile.txt","w") as datafile:
datafile.write(str(list_of_strings)) # <-- Not a good idea
這是你的錯。寫一個字符串只會輸出字符串內容,但是在列表中調用write()會打印出它的repr(),所以在文件中會出現引號和反斜杠。像這樣正確地寫出字符串列表:
1
2with open("newfile.txt","w") as datafile:
datafile.writelines(list_of_strings)
…它基本上是這個的縮寫:
1
2
3with open("newfile.txt","w") as datafile:
for s in list_of_strings:
datafile.write(s)
這樣做,當你讀回你的文件時,它會正常運行,而不必玩游戲。
我不認為這是OP的情況——他清楚地表明數據是以列表的形式給出的。repr格式來自str(...)調用,這是基于對必須將列表轉換為字符串而不是訪問字符串元素的誤解…
你可能是對的…在他們試圖簡化的過程中,問題會破壞他們所處理的數據的真實格式,這并不少見,但現在看了他的自我回答,我懷疑你的解釋是正確的。
您的列表中已經有字符串。將列表轉換為字符串不是您想要的:這是為了顯示列表,例如用于調試。
你想要的(我假設)是從列表中提取字符串。這會導致換行符保持原樣。至少有兩種方法可以做到這一點:
為了使單詞標記化最有效,最好先做句子標記化。您的示例只顯示一個包含單個元素的列表,而該元素恰好包含一個句子。如果您的數據總是每個元素有一個句子(即,您已經有了句子拆分文本),您可以簡單地執行以下操作:
1
2
3for sentence in example_list:
tokens = word_tokenize(sentence)
# Do something with the tokens of this sentence...
但是,如果文本尚未進行句子拆分,則需要先執行該操作。關于您的數據,有兩種可能性:列表元素要么是段落,要么是任意片段。
在段落的情況下,假設每個元素包含多個句子,但句子從不跨越多個元素。在這種情況下,代碼可能如下所示:
1
2
3
4for paragraph in example_list:
for sentence in sent_tokenize(paragraph):
tokens = word_tokenize(sentence)
# Do something with the tokens of this sentence...
在最后一種情況下,如果列表元素是任意片段,句子跨越多個元素,我們需要先將它們連接起來。NLTK的工具期望一個句子由一個連續的字符串組成,因此必須首先連接所有片段。這樣做:
1
2
3
4text = ''.join(example_list)
for sentence in sent_tokenize(text):
tokens = word_tokenize(sentence)
# Do something with the tokens of this sentence...
希望這能給你一些線索!
總結
以上是生活随笔為你收集整理的python列表换行输出_Python从列表转换为字符串时处理换行符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 必须要知道的多媒体知识-音视频编解码-h
- 下一篇: 【转载】用Python计算身份证校验码