gpt4 book ai didi

python - 从字符串中提取信息并转换为列表

转载 作者:行者123 更新时间:2023-12-05 01:34:05 24 4
gpt4 key购买 nike

我有一个如下的字符串:

[Base Font : IOHLGA+Trebuchet, Font Size : 3.5324998, Font Weight : 0.0] [(X=250.44,Y=223.48499) height=3.5324998 width=4.2910004]DECEMBER 31,

[Base Font : IOFOEO+Imago-Book, Font Size : 3.876, Font Weight : 0.0] [(X=307.5,Y=240.48499) height=3.876 width=2.9970093]respectively. The net decrease in the revenue

[Base Font : IOHLGA+Trebuchet, Font Size : 3.5324998, Font Weight : 0.0] [(X=49.5,Y=233.98499) height=3.5324998 width=2.5690002](US$ in millions)

我想提取“X”的值和关联的文本并将其转换为列表。请查看下面的预期输出:

预期输出:

['X=250.44','DECEMBER 31,']
['X=307.5','respectively. The net decrease in the revenue']
['X=49.5','(US$ in millions)']

我们如何在 Python 中解决这个问题?

我的方法:

mylist = []
for line in data.split("\n"):
if line.strip():
x_coord = re.findall('^(X=.*)\,$', line)
text = re.findall('^(]\w +)', line)
mylist.append([x_coord, text])

我的方法没有为 x_coordtext 识别任何值。

最佳答案

重新解决方案:

import re

input = [
"[Base Font : IOHLGA+Trebuchet, Font Size : 3.5324998, Font Weight : 0.0] [(X=250.44,Y=223.48499) height=3.5324998 width=4.2910004]DECEMBER 31,",
"[Base Font : IOFOEO+Imago-Book, Font Size : 3.876, Font Weight : 0.0] [(X=307.5,Y=240.48499) height=3.876 width=2.9970093]respectively. The net decrease in the revenue",
"[Base Font : IOHLGA+Trebuchet, Font Size : 3.5324998, Font Weight : 0.0] [(X=49.5,Y=233.98499) height=3.5324998 width=2.5690002](US$ in millions)",
]

def extract(s):
match = re.search("(X=\d+(?:\.\d*)?).*?\](.*?)$",s)
return match.groups()

output = [extract(item) for item in input]
print(output)

输出:

[
('X=250.44', 'DECEMBER 31,'),
('X=307.5', 'respectively. The net decrease in the revenue'),
('X=49.5', '(US$ in millions)'),
]

解释:

  • \d ... 数字
  • \d+ ... 一个或多个数字
  • (?:...) ... 非捕获(“正常”)括号
  • \.\d* ... 点后跟零个或多个数字
  • (?:\.\d*)? ... 可选(零或一)“小数部分”
  • (X=\d+(?:\.\d*)?) ... 第一组,X=number
  • .*? ...零个或多个任意字符(非贪婪)
  • \] ... ] 符号
  • $ ... 字符串结束
  • \](.*?)$ ... 第二组,] 和字符串结尾之间的任何内容

关于python - 从字符串中提取信息并转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64043537/

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