String 如何连接列表中的纯文本元素,忽略数字字符串和其他元素?
我有一个包含如下元素的列表String 如何连接列表中的纯文本元素,忽略数字字符串和其他元素?,string,python-3.x,String,Python 3.x,我有一个包含如下元素的列表 ["xyz", "abc", "123,123,123", 456.78 , "pqr"] 我只想将字符串中的元素合并为单个字符串,并将数字字符串转换为数字,如 [ "xyzabcpqr", 123123123, 456.78] 如何以pythonic的方式实现这一点?您可以使用: 事情是这样的: import numbers mylist = ["xyz", "abc", "123,123,123", 456.78 , "pqr"] for i in
["xyz", "abc", "123,123,123", 456.78 , "pqr"]
我只想将字符串中的元素合并为单个字符串,并将数字字符串转换为数字,如
[ "xyzabcpqr", 123123123, 456.78]
如何以pythonic的方式实现这一点?您可以使用:
事情是这样的:
import numbers
mylist = ["xyz", "abc", "123,123,123", 456.78 , "pqr"]
for i in mylist:
if(isinstance(i , numbers.Number)):
pass
else:
print (i)
重要提示:我复制了您的列表项并签出,结果如下:
'xyz' , 'abc' , '123,123,123' , 'pqr'
您可以看到它按原样打印123123,这是因为您在数组中以字符串123123的形式传递了该元素,如果您以整数的形式传递该元素,例如123123,for循环也将传递该元素
编辑
在这种情况下,您可以将代码稍微调整为:
import numbers
mylist = ["xyz", "abc", "123,123,123", 456.78 , "pqr"]
for i in mylist:
# check if there is a number as element
if(isinstance(i , numbers.Number)):
pass
# check if there is a string element in array that includes any digits
elif(any(element.isdigit() for element in i)):
pass
# after filters that we applied , then print the element
else:
print (i)
结果将是xyz、abc、pqr
我想您要求在数组中加入元素,为此您可以使用joinyourList而不是printi或任何您想要的功能。。。
希望它能帮你解决这个问题。也许这不是很漂亮,但它很管用
import numbers
L_in = ["xyz", "abc", "123,123,123", 456.78 , "pqr"]
L_out = []
char_str = ""
for i in L_in:
if(isinstance(i , numbers.Number)):
L_out.append(i)
elif any(c.isdigit() for c in i):
L_out.append(int(''.join([c for c in i if c.isdigit()])))
else:
char_str += i
L_out = [char_str]+L_out
结果:
['xyzabcpqr', 123123123, 456.78]
您可以使用一个循环尝试正则表达式:
data=["xyz", "abc", "123,123,123", 456.78 , "pqr",11111111]
import re
string_pattern=r'[a-zA-Z]+'
num_pattern1=r'[0-9.,]+'
s_=[]
i_=[]
for i in data:
a=re.search(string_pattern,str(i))
b=re.search(num_pattern1,str(i))
if a!=None:
s_.append(a.group())
elif b!=None:
if '.' in b.group():
i_.append(float(b.group()))
elif ',' in b.group():
i_.append(int(b.group().replace(',','')))
else:
i_.append(int(b.group()))
print(["".join(s_)]+i_)
输出:
['xyzabcpqr', 123123123, 456.78, 11111111]
谢谢数字作为字符串出现在列表中,我需要处理并忽略它作为数字。