ドキュメントから、以下は、regexメソッドfindallがどのように動作するかを示すスニペットであり、リストが返されることを確認します。 findAllによって返されたリストの0番目の要素にアクセスしようとすると、次のコード断片は、境界誤差(IndexError: list index out of range
)のアウトを生成しかしPython:Regex findallがリストを返しますが、なぜリスト要素[0]にアクセスしようとするとエラーが返されますか?
re.findall(r"\w+ly", text)
['carefully', 'quickly']
。
関連するコードフラグメント:
population = re.findall(",([0-9]*),",line)
x = population[0]
thelist.append([city,x])
これはなぜ起こるのでしょうか?
import re
thelist = list()
with open('Raw.txt','r') as f:
for line in f:
if line[1].isdigit():
city = re.findall("\"(.*?)\s*\(",line)
population = re.findall(",([0-9]*),",line)
x = population[0]
thelist.append([city,x])
with open('Sorted.txt','w') as g:
for item in thelist:
string = item[0], ', '.join(map(str, item[1:]))
print string
EDIT:これが起こった理由について、いくつかの背景については、以下のコメントを読むことフラグメントは私のスクリプト全体にどのように適合するか、いくつかのより多くの背景については
は、ここにあります。私の簡単な修正されました:一致がない場合
if population:
x = population[0]
thelist.append([city,x])
正規表現が常に一致するとPythonシェル上で独立してそのフラグメントを実行して、時には – JBernardo
を空のリストを返しませんの
はそれがないことを示しています。同じ入力ファイルも使用されます。 – Louis93
は明らかに* all *行ではありません。 –