gpt4 book ai didi

python - 识别整数、字符串和浮点文字

转载 作者:行者123 更新时间:2023-11-28 17:08:56 24 4
gpt4 key购买 nike

我是 Python 的新手,但遇到了一个问题。我有一个包含如下数据的输入文件:

12345    67890     afghe
abcde 23456 0abcd
34567 __fred01 45678
123.456 12345a 123.
.456 ab00cd 00ab00

需要使用正则表达式来解析每个字面量,并判断字面量是字符串还是整数还是 float 。代码片段有点像下面:

def processtoken(token):
#Replace the following line with your code to classify
# the string in 'token' according to your three Regular
# Expressions and print the appropriate message.
print('Inside Process Token')

match = re.search(r'(0|[1-9][0-9]*|0[oO]?[0-7]+|0[xX][0-9a-fA-F]+|0[bB][01]+)[lL]?', token)
matchfp = re.search(r'^[0-9]+\.?[0-9]+$',token)
if match:
print(match.group(),'matches INT')
elif matchfp:
print(matchfp.group(),'matches FP')

我的问题是如何构造代码以验证每个传递的 token 的多个正则表达式条件。截至目前,如果条件未得到验证,则为 float 。我想检查 token ,第一个整数正则表达式是否匹配,或者它是否匹配浮点正则表达式或匹配字符串。任何帮助将不胜感激。

最佳答案

我会按如下方式构造问题:

integer_regex = r"^...$"
float_regex = r"^...$"
string_regex = r"^...$"

def processToken(token):

if re.search(integer_regex, token):
print(token, 'matches INT')
elif re.search(float_regex, token):
print(token, 'matches FLOAT')
elif re.search(string_regex, token):
print(token, 'matches STR')
else:
print(token, 'unknown')

将您的模式填充到上面的 *_regex 变量中。

另请注意,您的 float 模式并不好,因为它也匹配 int:

r'^[0-9]+\.?[0-9]+$'

因为小数点是可选的。您最好将模式分成三个选项的交替,以“.”开头,以“.”结尾。或包含“.”数之间。此外,在您的整数模式中,“?”八进制部分不正确:

0[oO]?[0-7]+

此时我们正尝试使用八进制,因此前缀不是可选的:

0[oO][0-7]+

你对十六进制和二进制的理解是正确的。

关于python - 识别整数、字符串和浮点文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49062324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com