python - 按字符拆分字符串
python - splitting string by characters
我有一个看起来像这样的字符串:
my_str = '15(1)(635)(634)(582)(583)'
如何从字符串中获取值数组?
[15,1,635,634,582,583]
删除“)”,然后拆分为“(”:
[int(x) for x in my_str.replace(")", "").split("(")]
此列表推导式还将字符串转换为整数。
这可以用一个简单的正则表达式轻松解决:\d+
import re
my_str = '15(1)(635)(634)(582)(583)'
print([int(i.group()) for i in re.finditer(r'\d+', my_str)])
输出:
[15, 1, 635, 634, 582, 583]
给定这个特定的输入,简化问题的一种方法是只获取连续的数字串,例如使用 itertools.groupby
:
>>> my_str = '15(1)(635)(634)(582)(583)'
>>> from itertools import groupby
>>> [int(''.join(group)) for dec, group in groupby(my_str, str.isdecimal) if dec]
[15, 1, 635, 634, 582, 583]
您可以使用 re
模块:
import re
my_str = '15(1)(635)(634)(582)(583)'
my_str = re.findall(r"[\w']+", my_str)
for i in range(len(my_str)):
my_str[i] = int(my_str[i])
print(my_str)
这将首先将列表拆分为由特殊字符分隔的字符串,然后将它们转换为整数。
或者,您可以使用常规 .split()
函数按 "("
拆分,然后删除带有子字符串的最终 ")"
:
my_str = '15(1)(635)(634)(582)(583)'
my_str = my_str.split("(")
for i in range(len(my_str) - 1):
my_str[i + 1] = int(my_str[i + 1][:-1])
my_str[0] = int(my_str[0])
print(my_str)
两者的输出:
[15, 1, 635, 634, 582, 583]
希望对您有所帮助!如果您有任何其他问题或需要澄清,请告诉我:)
这类似于this one。首选的解决方案是将两个定界符之一的所有实例替换为另一个,例如by new_str = my_str.replace(')', '(')
,它给你一个字符串,你只有一种括号作为分隔符。然后在那个带有分隔符的 .split()
上,你会得到一个列表,你可以很容易地将它转换成一个数组。如果您希望单个值作为整数而不是字符串,您还需要转换它们。
my_str = '15(1)(635)(634)(582)(583)'
new_str = my_str.replace("(", " ")
new_str = new_str.replace(")", " ")
my_arr = new_str.split()
my_arr = [int(num)for num in my_arr]
print(my_arr)
可能有更短的方法。这是一个:
my_str = '15(1)(635)(634)(582)(583)'
my_str = my_str.replace(')(', ' ')
my_str = my_str.replace('(', ' ')
my_str = my_str.replace(')', ' ')
my_int_list = my_str.split()
你的 str 看起来像这样:
my_str = '15(1)(635)(634)(582)(583)'
所以用 space
替换 ')'
mystr = mystr.replace(')'," ")
也用 space
替换 '('
mystr = mystr.replace(')'," ")
终于:
my_str = "15(1)(635)(634)(582)(583)"
mystr = my_str.replace(")", " ")
mystr = mystr.replace("(", " ")
mystr = [int(x) for x in mystr.split(" ") if x]
mystr
我有一个看起来像这样的字符串:
my_str = '15(1)(635)(634)(582)(583)'
如何从字符串中获取值数组?
[15,1,635,634,582,583]
删除“)”,然后拆分为“(”:
[int(x) for x in my_str.replace(")", "").split("(")]
此列表推导式还将字符串转换为整数。
这可以用一个简单的正则表达式轻松解决:\d+
import re
my_str = '15(1)(635)(634)(582)(583)'
print([int(i.group()) for i in re.finditer(r'\d+', my_str)])
输出:
[15, 1, 635, 634, 582, 583]
给定这个特定的输入,简化问题的一种方法是只获取连续的数字串,例如使用 itertools.groupby
:
>>> my_str = '15(1)(635)(634)(582)(583)'
>>> from itertools import groupby
>>> [int(''.join(group)) for dec, group in groupby(my_str, str.isdecimal) if dec]
[15, 1, 635, 634, 582, 583]
您可以使用 re
模块:
import re
my_str = '15(1)(635)(634)(582)(583)'
my_str = re.findall(r"[\w']+", my_str)
for i in range(len(my_str)):
my_str[i] = int(my_str[i])
print(my_str)
这将首先将列表拆分为由特殊字符分隔的字符串,然后将它们转换为整数。
或者,您可以使用常规 .split()
函数按 "("
拆分,然后删除带有子字符串的最终 ")"
:
my_str = '15(1)(635)(634)(582)(583)'
my_str = my_str.split("(")
for i in range(len(my_str) - 1):
my_str[i + 1] = int(my_str[i + 1][:-1])
my_str[0] = int(my_str[0])
print(my_str)
两者的输出:
[15, 1, 635, 634, 582, 583]
希望对您有所帮助!如果您有任何其他问题或需要澄清,请告诉我:)
这类似于this one。首选的解决方案是将两个定界符之一的所有实例替换为另一个,例如by new_str = my_str.replace(')', '(')
,它给你一个字符串,你只有一种括号作为分隔符。然后在那个带有分隔符的 .split()
上,你会得到一个列表,你可以很容易地将它转换成一个数组。如果您希望单个值作为整数而不是字符串,您还需要转换它们。
my_str = '15(1)(635)(634)(582)(583)'
new_str = my_str.replace("(", " ")
new_str = new_str.replace(")", " ")
my_arr = new_str.split()
my_arr = [int(num)for num in my_arr]
print(my_arr)
可能有更短的方法。这是一个:
my_str = '15(1)(635)(634)(582)(583)'
my_str = my_str.replace(')(', ' ')
my_str = my_str.replace('(', ' ')
my_str = my_str.replace(')', ' ')
my_int_list = my_str.split()
你的 str 看起来像这样:
my_str = '15(1)(635)(634)(582)(583)'
所以用 space
替换 ')'mystr = mystr.replace(')'," ")
也用 space
替换 '('mystr = mystr.replace(')'," ")
终于:
my_str = "15(1)(635)(634)(582)(583)"
mystr = my_str.replace(")", " ")
mystr = mystr.replace("(", " ")
mystr = [int(x) for x in mystr.split(" ") if x]
mystr