Python:分隔数字末尾的字符

Python: Separate the characters at the end of the number

我正在使用 Python。 如何分隔数字末尾的字符? 事情是后面的字符可以是任何东西。没有定义的分隔符所以我不能使用子字符串。

例如:

0.00156984$
0.00147273Euro​
0.00002836¥
0.00156765BTC

最终结果:

0.00156984  
0.00147273 ​
0.00002836    
0.00156765 

$
Euro
¥
BTC

亲切的问候

如果您在这里使用 Pandas,那么您可以使用 str.extract:

df["Number"] = df["String"].str.extract(r'^(\d+(?:\.d+)?)')
df["Text"] = df["String"].str.extract(r'^\d+(?:\.d+)?(.*)$')

对于通用 Python 解决方案,请使用:

Number = re.findall(r'^(\d+(?:\.\d+)?)', String)[0]
print(Number)  # 0.00156984
Text = re.sub(r'\d+(?:\.\d+)?', '', String)
print(Text)  # $

你可以使用 're' 模块来实现这个,例如检查下面的代码:

import re 

def main_fun(data):
  # '[0-9\.]+' will select all numbers and '.' 
  # & \D will select everything that is not a number.
  search_word = re.search(r'([0-9\.]+)(\D+)', data, re.M | re.I)
  if search_word:
    number = search_word.group(1)
    word = search_word.group(2)
    return (number, word)

data = '0.00147273Euro'

number, word = main_fun(data)

print(number)
print(word)

你可以试试str.extract

import pandas as pd

df = pd.DataFrame(['0.00156984$', '0.00147273Euro', '0.00002836¥', '0.00156765BTC'], columns=['String'])

df[['Number', 'Text']] = df['String'].str.extract(r'([\d.]+)([^\d]+)')
    String          Number      Text
0   0.00156984$     0.00156984  $
1   0.00147273Euro  0.00147273  Euro
2   0.00002836¥     0.00002836  ¥
3   0.00156765BTC   0.00156765  BTC

你可以试试这个

s = "0.00156984$"


def my_parser(s):
    split_index = max(map(s.rfind, '0123456789')) + 1
    return s[:split_index], s[split_index:]


if __name__ == '__main__':
    print(my_parser(s))