Python: 如何将字符串与列表分开
Python: How to separate a String with a List
假设我知道货币的类型。如何分隔以下字符串?
Units = ["Dollar", "Yuan", "Rupee", "USDT"]
例如:
TwoDollar
FiveYuan
EightRupee
TwentyUSDT
结果:
Two
Five
Eight
Twenty
Dollar
Yuan
Rupee
USDT
谢谢!
您可以使用 re
模块:
import re
s = ["TwoDollar", "FiveYuan", "EightRupee", "TwentyUSDT"]
units = ["Dollar", "Yuan", "Rupee", "USDT"]
r = re.compile("(.*?)(" + "|".join(map(re.escape, units)) + ")")
amounts, u = [], []
for word in s:
m = r.search(word)
if m:
amounts.append(m.group(1))
u.append(m.group(2))
print(*amounts, sep="\n")
print()
print(*u, sep="\n")
打印:
Two
Five
Eight
Twenty
Dollar
Yuan
Rupee
USDT
我认为对您来说最简单的方法是使用“拆分”功能,
mySting = "twentytwodollar"
print(myString.split("dollar"))
money = "Yuan"
mySting = "FiveYuan"
print(myString.split(money))
好吧,这是 python 的非常基本的问题,您必须先进行研究,但如果您需要解释,我会以最简单的方式为您提供帮助的答案。
values = ['TwoDollar',
'FiveYuan',
'EightRupee',
'TwentyUSDT']
currencies = ['Dollar','Yuan','Rupee','USDT']
for value in values:
for currency in currencies:
if currency in value:
print(value[: value.index(currency,0)])
print(value[ value.index(currency,0) :])
对于Python3.9
units = ["Dollar", "Yuan", "Rupee", "USDT"]
values = ["TwoDollar","FiveYuan","EightRupee","TwentyUSDT"]
value_list = []
unit_list = []
for value in values:
for unit in units:
if unit in value:
value_list.push(string1.removesuffix(unit))
unit_list.push(unit)
break
# print your value_list and unit_list
阅读更多关于 removesuffix
here
试试这个单线:
import re
uns = ["Dollar", "Yuan", "Rupee", "USDT"]
lst = ["TwoDollar", "FiveYuan", "EightRupee", "TwentyUSDT"]
amounts, units = map(list,
zip(*(re.match(f'^(.*)({u})$', s).groups()
for u, s in zip(uns, lst))))
结果:
>>> amounts
['Two', 'Five', 'Eight', 'Twenty']
>>> units
['Dollar', 'Yuan', 'Rupee', 'USDT']
由于金额和单位在您的字符串中都以大写字母开头,您甚至不需要知道货币的类型,只需尝试:
import re
values = ["TwoDollar", "FiveYuan", "EightRupee", "TwentyUSDT"]
amounts, units = [], []
for s in values:
outputs = re.findall(r'[A-Z]+[a-z]*', s)
amounts.append(outputs[0])
units.append(outputs[1])
print(*amounts, '\n', *units, sep="\n")
为了完整起见,这里有一个简单的列表理解示例
cur = ['Dollar', 'Yuan', 'Rupee', 'USDT']
vals= ['TwoDollar', 'FiveYuan', 'EightRupee', 'TwentyUSDT']
print([a.split(x)[0] for a in vals for x in cur if len(a.split(x)) == 2])
输出是
['Two', 'Five', 'Eight', 'Twenty']
如果你想在结果中包含货币,你可能想构建一个元组作为列表项。
[(a.split(x)[0], x) for a in vals for x in cur if len(a.split(x)) == 2]
给你这个
[('Two', 'Dollar'), ('Five', 'Yuan'), ('Eight', 'Rupee'), ('Twenty', 'USDT')]
干杯
马库斯
假设我知道货币的类型。如何分隔以下字符串? Units = ["Dollar", "Yuan", "Rupee", "USDT"]
例如:
TwoDollar
FiveYuan
EightRupee
TwentyUSDT
结果:
Two
Five
Eight
Twenty
Dollar
Yuan
Rupee
USDT
谢谢!
您可以使用 re
模块:
import re
s = ["TwoDollar", "FiveYuan", "EightRupee", "TwentyUSDT"]
units = ["Dollar", "Yuan", "Rupee", "USDT"]
r = re.compile("(.*?)(" + "|".join(map(re.escape, units)) + ")")
amounts, u = [], []
for word in s:
m = r.search(word)
if m:
amounts.append(m.group(1))
u.append(m.group(2))
print(*amounts, sep="\n")
print()
print(*u, sep="\n")
打印:
Two
Five
Eight
Twenty
Dollar
Yuan
Rupee
USDT
我认为对您来说最简单的方法是使用“拆分”功能,
mySting = "twentytwodollar"
print(myString.split("dollar"))
money = "Yuan"
mySting = "FiveYuan"
print(myString.split(money))
好吧,这是 python 的非常基本的问题,您必须先进行研究,但如果您需要解释,我会以最简单的方式为您提供帮助的答案。
values = ['TwoDollar',
'FiveYuan',
'EightRupee',
'TwentyUSDT']
currencies = ['Dollar','Yuan','Rupee','USDT']
for value in values:
for currency in currencies:
if currency in value:
print(value[: value.index(currency,0)])
print(value[ value.index(currency,0) :])
对于Python3.9
units = ["Dollar", "Yuan", "Rupee", "USDT"]
values = ["TwoDollar","FiveYuan","EightRupee","TwentyUSDT"]
value_list = []
unit_list = []
for value in values:
for unit in units:
if unit in value:
value_list.push(string1.removesuffix(unit))
unit_list.push(unit)
break
# print your value_list and unit_list
阅读更多关于 removesuffix
here
试试这个单线:
import re
uns = ["Dollar", "Yuan", "Rupee", "USDT"]
lst = ["TwoDollar", "FiveYuan", "EightRupee", "TwentyUSDT"]
amounts, units = map(list,
zip(*(re.match(f'^(.*)({u})$', s).groups()
for u, s in zip(uns, lst))))
结果:
>>> amounts
['Two', 'Five', 'Eight', 'Twenty']
>>> units
['Dollar', 'Yuan', 'Rupee', 'USDT']
由于金额和单位在您的字符串中都以大写字母开头,您甚至不需要知道货币的类型,只需尝试:
import re
values = ["TwoDollar", "FiveYuan", "EightRupee", "TwentyUSDT"]
amounts, units = [], []
for s in values:
outputs = re.findall(r'[A-Z]+[a-z]*', s)
amounts.append(outputs[0])
units.append(outputs[1])
print(*amounts, '\n', *units, sep="\n")
为了完整起见,这里有一个简单的列表理解示例
cur = ['Dollar', 'Yuan', 'Rupee', 'USDT']
vals= ['TwoDollar', 'FiveYuan', 'EightRupee', 'TwentyUSDT']
print([a.split(x)[0] for a in vals for x in cur if len(a.split(x)) == 2])
输出是
['Two', 'Five', 'Eight', 'Twenty']
如果你想在结果中包含货币,你可能想构建一个元组作为列表项。
[(a.split(x)[0], x) for a in vals for x in cur if len(a.split(x)) == 2]
给你这个
[('Two', 'Dollar'), ('Five', 'Yuan'), ('Eight', 'Rupee'), ('Twenty', 'USDT')]
干杯
马库斯