我知道所需的语法位于第一个函数中,但是我一生无法找到它的位置。
我试图删除逗号并在每个.split()
中添加空格,这产生了不希望的返回值。
def get_country_codes(prices):
price_list = prices.split(',')
results = ''
for price in price_list:
results += price.split('$')[0]
return results
def main():
prices = "US$40, AU$89, JP$200"
price_result = get_country_codes(prices)
print(price_result)
if __name__ == "__main__":
main()
当前输出:
US AU JP
所需的输出:
US, AU, JP
答案 0 :(得分:0)
使用列表而不是字符串来收集价格的国家/地区代码似乎可以使您受益。然后您可以稍后使用', '.join()
。
也许是这样的:
def get_country_codes(prices):
country_code_list = []
for price in prices.split(','):
country_code = price.split('$')[0].strip()
country_code_list.append(country_code)
return country_code_list
if __name__ == '__main__':
prices = "US$40, AU$89, JP$200"
result_list = get_country_codes(prices)
print(', '.join(result_list))
或者,如果您喜欢真正的短代码:
prices = "US$40, AU$89, JP$200"
print(
', '.join(
price.split('$')[0].strip()
for price in prices.split(',')))
答案 1 :(得分:0)
如果需要,也可以使用正则表达式。由于您知道国家/地区代码将仅是两个大写字母(A-Z),因此可以查找在美元符号前面的两个大写字母的匹配项。
def get_country_codes(prices):
country_codes = re.findall(r'([A-Z]{2})\$', prices)
return ', '.join(country_codes)
请参见regex demo here。
答案 2 :(得分:0)
查看后续步骤:
您的字符串:
In [1]: prices = "US$40, AU$89, JP$200"
分成逗号列表
In [2]: alist = prices.split(',')
In [3]: alist
Out[3]: ['US$40', ' AU$89', ' JP$200']
在$
上拆分子字符串In [4]: [price.split('$') for price in alist]
Out[4]: [['US', '40'], [' AU', '89'], [' JP', '200']]
选择第一个元素:
In [5]: [price.split('$')[0] for price in alist]
Out[5]: ['US', ' AU', ' JP']
您的+=
照原样连接字符串;与join
相同,并带有“”。请注意,子字符串仍然具有原始字符串的初始空白。
In [6]: ''.join([price.split('$')[0] for price in alist])
Out[6]: 'US AU JP'
加入逗号:
In [7]: ','.join([price.split('$')[0] for price in alist])
Out[7]: 'US, AU, JP'
join
是将字符串列表之间使用特定定界符进行连接的最简单方法,实际上是反转split
。循环中的+=
较难使用,因为它倾向于在开头或结尾添加一个额外的定界符。