Python 3: 文字列(方程式)が与えられた場合、正と負の整数のリストを返します。 私はさまざまな正規表現とリストの解読のソリューションを無駄にしようとしました。式4 + 3X又は-5 + 2Y又は-7y-2X 戻り考えるPython:文字列から正と負の整数をフィルタリングする
:[4,3]、[-5,2]、[-7、-2]
入力
str = '-7y-2x'
出力
my_list = [-7, -2]
Python 3: 文字列(方程式)が与えられた場合、正と負の整数のリストを返します。 私はさまざまな正規表現とリストの解読のソリューションを無駄にしようとしました。式4 + 3X又は-5 + 2Y又は-7y-2X 戻り考えるPython:文字列から正と負の整数をフィルタリングする
:[4,3]、[-5,2]、[-7、-2]
入力
str = '-7y-2x'
出力
my_list = [-7, -2]
シンプルなソリューション:
import re
s = '-5+2y'
result = [int(d) for d in re.findall(r'-?\d+', s)]
print(result)
出力:
[-5, 2]
-?\d+
は - 正および負の整数
と一致します生の文字列表記(
r"text"
)は正規表現をそのまま維持します。 それがなければ、正規表現内のすべてのバックスラッシュ(「\
」)は はそれを
これは動作します。私は以前のre.split()とはるかに長い正規表現を試してみました。したがって、オプションであり、数字はそうではありません。 「r」は何ですか? –
@JamesGoldstein、*未処理の文字列表記(** r "text" **)は正規表現をそのまま維持します。それがなければ、正規表現中のすべてのバックスラッシュ( '\')はエスケープするために別の接頭辞を付けなければなりません。 – RomanPerekhrest
この正規表現は、あなたの問題を解決する必要があります。
[\+\-]?[0-9]+
また、次のコードもあります。
re.findall関数用いimport re
regex = re.compile(r'[\+\-]?[0-9]+')
nums = [int(k) for k in regex.findall('5-21x')]
を逃れるために別のものを前に付けなければならない[MCVE]最新の試みのを提供し、あなたのコード何を参照して説明してくださいあなたが持っている問題。 – idjaw
この質問がなぜ多くのdownvotesを得たか理解できません。はい、OPは彼の努力を示していませんが、少なくとも、彼は入力と期待される出力を示しており、仕事は非常に簡単です – RomanPerekhrest