这是我正在处理的输入数据。
November (5th-26th)我想要做的是从这个数据字符串中得到两个独立的输出。即{11月5日}和{11月26日}
目前,我使用这个python脚本来删除其中的未包含的字符。
Name = input_data['date'].replace("(", "").replace(")", "")
output = [{"Date": Name}]并使用其他无代码形成工具(Zapier)来拆分数据,并使输出以{11月5日}和{11月26日}的形式出现。
我想知道,如果有一个单一的python代码,我可以使用在不使用其他格式化工具获得所需的输出。
谢谢
我还没有找到密码。
发布于 2022-11-11 08:48:39
你可以这样做,分两步:
string = "November (5th-26th)"
month, days = [x.strip('()') for x in string.split(' ')]
start, end = days.split('-')
output = {'date_range' : [f"{month} {start}", f"{month} {end}"]}
print(output){'date_range': ['November 5th', 'November 26th']}第二个任务:类似的方法,将& (用前导和尾随空间)替换为例如,,然后再像以前一样分割数据。
string2 = "December 10th & 11th"
string2 = string2.replace(' & ', ',')
month, days = string2.split(' ')
start, end = days.split(',')
output = {'date_range' : [f"{month} {start}", f"{month} {end}"]}
print(output){'date_range': ['December 10th', 'December 11th']}发布于 2022-11-11 08:45:53
一个简单的regex就能很好地处理这个问题。
import re
value = "November (5th-26th)"
month, date_from, date_to = re.match(r"(\w+)\s+\((.*)-(.*)\)", value).groups()
print([month, date_from, date_to]) # ['November', '5th', '26th']
result = [f"{month} {date_from}", f"{month} {date_to}"]
print(result) # ['November 5th', 'November 26th']发布于 2022-11-11 09:25:27
简单的令牌化和拆分应该可以做到这一点:
s = 'November (5th-26th)'
m, d = s.split()
for dt in d[1:-1].split('-'):
print(f'{{{m} {dt}}}')输出:
{November 5th}
{November 26th}https://stackoverflow.com/questions/74399948
复制相似问题