如果給出字符串「John Doe; Lodging; 123; 050617」,這是一個文件內的一行,我需要刪除之前的所有內容,包括第一個分號,以及後面和最後一個。我怎麼能做到這一點,而不會刪除我以後拆分剩餘的子字符串的能力?如何刪除以前出現的字符串部分;如果字符串中有多個分號?
先前的問題並沒有解決一旦分離出去的部分,同時保留進一步使用所需的部分。
如果給出字符串「John Doe; Lodging; 123; 050617」,這是一個文件內的一行,我需要刪除之前的所有內容,包括第一個分號,以及後面和最後一個。我怎麼能做到這一點,而不會刪除我以後拆分剩餘的子字符串的能力?如何刪除以前出現的字符串部分;如果字符串中有多個分號?
先前的問題並沒有解決一旦分離出去的部分,同時保留進一步使用所需的部分。
逐步爲清楚:
string = "John Doe;Lodging;123;050617"
lst = string.split(';')
lst = lst[1:-1]
string = ';'.join(lst)
print(string)
>>> 'Lodging;123'
爲一條線:
';'.join('John Doe;Lodging;123;050617'.split(';')[1:-1])
>>> 'Lodging;123'
find方法會給你一個字符的第一個實例的索引從點到結束串in a string
original_s="John Doe;Lodging;123;050617"
idx = original_s.find(';')
new_s = original_s[i+1:]
print(new_s)
使用str.partition
和str.rpartition
。
s = "John Doe;Lodging;123;050617"
s.partition(';')[-1].rpartition(';')[0] # Lodging;123
就效率而言,這可能是最好的解決方案。不過,我發現split/join方法更具可讀性。
這不會給OP的輸出帶來希望,「John Doh;」和「; 050617」需要刪除。順便說一句,我沒有downvote這 – jacoblaw
@ jacoblaw更新,謝謝 –
test = "John Doe;Lodging;123;050617"
';'.join(test.split(';')[1:-1])
索引兩次是沒有必要的,你可以使用'[1:-1]' –
s = "John Doe;Lodging;123;050617"
new_s = ';'.join(s.split(';')[1:-1])
這將使new_s = 'Lodging;123'
有,你可以嘗試一些方法。最簡單的一種是分割字符串和再組裝起來:
data = 'John Doe;Lodging;123;050617'
';'.join(data.split(';')[1:-1])
你也可以使用find
和rfind
(如找到,但是從字符串的結尾向後:
data[data.find(';')+1:data.rfind(';')]
還有partition
和rpartition
:
first, sep, remainder = data.partition(';')
middle, sep, final = remainder.rpartition(';')
嘗試:
s = "John Doe;Lodging;123;050617"
print(';'.join(s.split(';')[1:-1]))
你想讓字符串看起來像什麼?這將有助於使這個問題更清楚。你想要什麼樣的最終結果? –
這裏也適用相同的答案。只需拆分,然後加入你想要的。 –
我需要住宿; 123(這將改變,因爲這些是來自.txt文件的輸入)。然後,我需要分割剩餘的子字符串,並分別將每個半字符分別添加到類別和值列表中。 –