![](/img/trans.png)
[英]Python :string index out of range with trying to find first capital letter
[英]Python Code to Replace First Letter of String: String Index Error
目前,我正在分析簡歷,以僅在每行的開頭使用“-”時才將其刪除。 在分割文本之后,我嘗試標識每個字符串的第一個字符。 下面是我的代碼:
for line in text.split('\n'):
if line[0] == "-":
line[0] = line.replace('-', ' ')
line是一個字符串。 這是我的想法,但是每次運行此命令時,都會出現錯誤IndexError: string index out of range
。 我不確定為什么,因為因為它是一個字符串,所以應該識別第一個元素。 謝謝!
您遇到的問題是因為某些行是空的。
那么您的替換是錯誤的:
line
。 順便說一句,原始的行列表也是如此。 如果要刪除字符串的第一個字符,則不需要replace
,只需對字符串進行切片即可(不要冒險刪除其他類似的字符)。
一個startswith
解決方案是使用startswith
進行測試並重建新的字符串列表。 然后加入
text = """hello
-yes--
who are you"""
new_text = []
for line in text.splitlines():
if line.startswith("-"):
line = line[1:]
new_text.append(line)
print("\n".join(new_text))
結果:
hello
yes--
who are you
有了更多經驗,您可以將此代碼打包到列表理解中:
new_text = "\n".join([line[1:] if line.startswith("-") else line for line in text.splitlines()])
最后,正則表達式模塊也是一個不錯的選擇:
import re
print(re.sub("^-","",text,flags=re.MULTILINE))
這將刪除所有以破折號開頭的破折號。 多行標志告訴正則表達式引擎將^
視為行的開始,而不是緩沖區的開始。
這可能是由於空行。 您可以在獲取索引之前檢查長度。
new_text = []
text="-testing\nabc\n\n\nxyz"
for line in text.split("\n"):
if line and line[0] == '-':
line = line[1:]
new_text.append(line)
print("\n".join(new_text))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.