2016-01-12 58 views
-1

在從文件讀取並將結果存儲到字符串中之後,是否有辦法檢測新行字符?下面是代碼:讀取文件並將結果存儲爲字符串後沒有新行字符

with open("text.txt") as file: 
    content_string = file.read() 
    file.close() 

re.search("\n", content_string) 

的content_string看起來是這樣的:「世界,你好」

Hello world! 
Hello WORLD!!!!! 

我想提取的第一行後的新行字符。這個角色是否存在?

+3

的'重。搜索行檢測到換行符,不是嗎?你只是不會做任何結果。 – usr2564301

+0

'content_string.endswith('\ n')' – cdarke

+0

如果我有更多的行,我想檢測第一個換行符,那麼如何?出於某種原因,在我的文本中它不會檢測到它。 – KidSudi

回答

1

根據Jongware評論,你執行的正則表達式搜索找到換行符。你只需要使用那個結果。

re module documentation

re.search(模式,字符串標誌= 0)

掃描通過串尋找其中定期 表達模式產生一個匹配所述第一位置,和返回相應的 MatchObject實例。如果字符串中沒有位置匹配 模式,則返回無;請注意,這與在字符串中的某處找到零長度的 匹配不同。

在代碼方面,檢查翻譯成:

with open("text.txt") as file: 
    content_string = file.read() 
    file.close() 

m = re.search("\n", content_string) 
if m: 
    print "Found a newline" 
else: 
    print "No newline found" 

現在,你的文件很可能會包含「\ r」,而非「\ n」:打印它們可能是相同的,但正則表達式不匹配。在這種情況下,也給這個試驗一試,更換正確的線路代碼:

m = re.search("\n", content_string) 

有:

m = re.search("[\r\n]", content_string) 

將尋求要麼。

+0

我其實編輯我的問題,請最後一部分。 – KidSudi

+0

您正在查詢換行符:如果字符串中有一個換行符,則正則表達式會找到它,如果是第一個或最後一個或多個,則無關緊要。可以通過充分更新re.search()語句中的正則表達式模式來完成要執行的匹配任何變化。 – sal

+1

@KidSudi:我更新瞭解決方案:您的文件中可能有\ r而不是\ n。測試這個解決方案。 – sal

0

如果我有更多的行,我想檢測第一個 換行符?出於某種原因,在我的文本中它不會檢測到它。

with open("text.txt") as f: 
    first_line = f.readline() 
    print(first_line) 
1

有沒有一種方法能檢測到新行字符我從 文件讀取並存儲結果轉換成字符串後?

如果我正確理解你,你想要將多行連接成一個字符串。 輸入:

Hello world! 
Hello WORLD!!!!! 

test.py:

result = [] 
with open("text.txt", "rb") as inputs: 
    for line in inputs: 
     result.append(line.strip()) # strip() removes newline charactor 

print " ".join([x for x in result]) 

輸出:

Hello world! Hello WORLD!!!!! 
相關問題