从字符串Python中提取值

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (49)

在bot应用程序上工作,所以我需要从消息字符串中提取值并将其传递给变量。消息字符串可以采用不同的方式,如:

message = 'name="Raj",lastname="Paul",gender="male", age=23'
message = 'name="Raj",lastname="Paul",age=23'
message = 'name="Raj",lastname="Paul",gender="male"'

提供的数据用户可以包含所有值,或者有时会丢失年龄或性别字段。

我被困的地方是, I am not sure how to check if age is present in the message text. If it is then extract value corresponding to age. If age is not in message, ignore age.

可以检查循环中的每个单词并提取字符串,但它变得非常冗长。如果有更简单的方法,请告诉我

喜欢

if Age is present in message then get the value of age,
if lastname is present in message then get the value of lastname
if gender is present in message then get the value of gender
if name is present in message then get the value of name
提问于
用户回答回答于

使用正则表达式:

(?:[, ])age=(\d+)

'age='从字符串中提取数字。

代码

import re

message = 'name="Raj",lastname="Paul",gender="male", age=23'
m = re.search(r'(?:[, ])age=(\d+)', message)
if m:
    print(m.group(1))

# 23
用户回答回答于
message = 'name="Raj",lastname="Paul",gender="male", age=23'

new_msg = message.replace('"', '').replace(' ', '').split(',')  # 2nd replace to delete the extra space before age

msg_dict = dict([x.split('=') for x in new_msg])

print(msg_dict)

此代码将以下输出作为字典返回。您可以遍历每条消息,并使用正确的密钥放置正确的属性。

{'name': 'Raj', 'lastname': 'Paul', 'gender': 'male', 'age': '23'}

扫码关注云+社区

领取腾讯云代金券