我有一个要迭代的数组。该数组由数字和符号组成的字符串组成。 像这样:1.105亿欧元 我想遍历它并删除所有欧元符号和M,然后将带有字符串的数组作为整数返回。 知道数组是表中的一列,我将如何做?
答案 0 :(得分:1)
您可以strip
个字符
>>> x = '€110.5M'
>>> x.strip('€M')
'110.5'
答案 1 :(得分:1)
def sanitize_string(ss):
ss = ss.replace('$', '').replace('€', '').lower()
if 'm' in ss:
res = float(ss.replace('m', '')) * 1000000
elif 'k' in ss:
res = float(ss.replace('k', '')) * 1000
return int(res)
这可以应用于列表,如下所示:
>>> ls = [sanitize_string(x) for x in ["€3.5M", "€15.7M" , "€167M"]]
>>> ls
[3500000, 15700000, 167000000]
如果您想将其应用于表的列:
dataFrame = dataFrame.price.apply(sanitize_string) # Assuming you're using DataFrames and the column is called 'price'
答案 2 :(得分:0)
您可以使用列表推导从另一个列表构造一个列表:
foo = ["€13.5M", "€15M" , "€167M"]
foo_cleaned = [value.translate(None, "€M")]
str.translate用第一个参数None
替换后一个字符串中所有出现的字符。
答案 3 :(得分:0)
尝试
arr = ["€110.5M","€110.5M","€110.5M","€110.5M","€110.5M","€110.5M","€110.5M"]
f = [x.replace("€","").replace("M","") for x in arr]
答案 4 :(得分:0)
您可以根据需要随时在字符串上调用{{3}}。最初的解决方案可能是这样的:
int(elem.replace('€', '').replace('M', ''))
这时,数组中仍然有字符串。如果要以整数形式返回它们,则可以改写[110, 111, 112]
。但是请注意,在浮点之后,您将失去所有东西,也就是说,您将以{{1}}结尾。
答案 5 :(得分:0)
您可以使用正则表达式来做到这一点。
import re
str = "€110.5M"
x = re.findall("\-?\d+\.\d+", str )
print(x)
我不太了解问题的第二部分。
答案 6 :(得分:0)
您可以使用字符串理解:
numbers = [float(p.replace('€','').replace('M','')) for p in a]
给出:
[110.5, 210.5, 310.5]