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))
我正在使用 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))