【发布时间】:2023-03-23 02:37:01
【问题描述】:
我有一个列表,内容如下:-
for 30 days
for 40 working days
for 20 weeks
for 2 months
我想拆分每个句子并与一组关键字进行比较:-
day
week
month
year
如果关键字'days' 出现在字符串中,那么我想将该字符串中的数字与'1' 相乘。如果存在关键字'month',则将该字符串中的数字乘以'30',依此类推……我是python新手,请!
我的代码
with open("test_term.csv", "rb") as file1:
reader = csv.reader(file1)
extractedlist = list(reader)
#print extractedlist
def split_line(text):
# split the text
words = text[0].split(' ')
# for each word in the line:
new_list = []
for word in words:
#print word
#print w2n.word_to_num(word)
conversion = w2n.word_to_num(word)
if isinstance(conversion, (int,long)):
#print conversion
new_list.append(conversion)
else:
new_list.append(word)
return new_list
for extraRow in extractedlist:
worn = split_line(extraRow)
keywords = {"day":1,"days":1,"year":365,"years":365,"week":7,"weeks":7,"month":30,"months":30}
#for s in worn:
# splitted_string = s.split(' ')
interesting_words = worn[2:]
mult = 1
for k,v in keywords.iteritems():
for word in interesting_words :
mult = v
break
result = mult*worn[1]
print result
现在我只有一个输入字符串for thirty working days这里'thirty'正在转换为'30'所以在穿我们有'for thirty working days'
输出是:-
210
900
10950
900
210
10950
30
30
但我期望的输出是 30*1 即'30'
【问题讨论】:
-
内容真的是这样吗,还是左/右侧可以多加文字?
-
检查this demo。
-
我刚刚发布了一个适合我的答案(我已经在我的电脑上试过了)
-
@javidgon...您能否检查一下我在问题中发布的代码并相应地更新您的答案?...提前谢谢!
标签: python string python-2.7