Python中怎么把list转换为字符串?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中怎么把list转换为字符串?相关的知识,希望对你有一定的参考价值。
我定义了这样一个数组,里面有两个字符串
connList = ["db1", "db2"]
接着一个循环
for dbname in connList
print dbname // 这里没事
stra = "connect " + dbname // 这里就出问题了
....
报的错是:
TypeError: cannot concatenate 'unicode' and 'list' objects
是不是应该要把dbname转成字符串?可是它应该就是字符串啊……?应该怎么转才对?
ETA2:呃,多谢回答,试了str(dbname)但是问题还是存在……
TypeError: cannot concatenate 'str' and 'list' objects
好吧,其实那个connList里的东西是通过一系列函数从系统中把db的名字读出来的,我print出来看它只是一个字符串,就一直把它当字符串了,现在看来有可能并不是的……
于是问题又回来了,怎么把一个list转成字符串?
ETA3: 刚刚仔细读了一下代码,connList这个数组里的是从一个Java类中返回的String。这种String跟python的字符串是有什么不同么?它们之间需要怎么转换么?
ETA4: 我也觉得很没理由哪。。。。。源码挺长的,重点部分如下
Java文件里:
Map<String, String> nameMap = new HashMap<String, String>();
//某个循环里:
nameMap.put( "dbs" + i + "_name", System.getenv("DBS" + i + "_NAME"));
nameMap.put(System.getenv("DBS" + i + "_NAME"), "dbs" + i + "_name");
Python文件里:
dbname1 = nameMap.get("dbs1_name")
dbname2 = nameMap.get("dbs2_name")
connList = [dbname1, dbname2]
//接着就是for循环了
刚刚又试了看看dbname的类型
print type(dbname)
结果是<type 'unicode'>
哪里有list啊???这
List中存的是字符串的时候,一般是通过join()函数去转换:
例 :
dataList = ['1', '2', '3', '4' ]
str1 = “ , ” + join(dataList )
print (dataList)
结果:
a b c d
扩展资料
关于join()函数:
join()是一个字符串方法,它返回被子字符串连接的字符串。
参数:The join() method takes join()方法需要可迭代的元素来一次返回它的一个成员,比如列表,元组,字符串,字典和集合
返回值:join()方法返回一个被子字符串连接的字符串。
Type Error: 如果这个可迭代元素包含任何不是字符串的值,join()函数就会抛出TypeError。
参考技术A例子:
将列表 temp_list = ['h', 'e', 'l', 'l', 'o'] 转换成字符串'hello',代码如下:
temp_list = ['h', 'e', 'l', 'l', 'o'];result = ''.join(temp_list)print(result) # hello
字符串对象的方法join其描述如下:s.join(iterable)是将括号内的迭代对象(如列表)使用s字符串作为链接将迭代对象中的元素拼接成一个字符串,返回该字符串。
扩展资料:
Python的控制语句:
1、if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
2、for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
3、while语句,当条件为真时,循环运行语句块。
4、try语句,与except,finally配合使用处理在程序运行中出现的异常情况。
5、class语句,用于定义类型。
6、def语句,用于定义函数和类型的方法。
7、pass语句,表示此行为空,不运行任何操作。
参考资料来源:百度百科-Python
参考技术B额。。。应该是没问题的
不成的话你转换一下试试吧
stra = "connect " + str(dbname)
你是用jython么?
nameMap在java里是hashmap的 在python里是个map么?
你确定这两种数据结构可以混用?
怀疑是这个map从java到python的时候string成unicode了
可以详细给下这map中间是怎么转换弄的么?
追问嗯,我是用的jython,但是跟python不是类似的么~
这两个是可以用,就是jython里把java的类import进来就用了……
我发现问题所在了,我的stra本来是个很长的串,我用换行隔开,类似这样
stra = "connect " + dbname + "bla bla..." \
+ "bla bla..." + i \
+ "bla bla..."
我试了下不换行,就全放到一行里,丑了点,但是,问题解决了...= =
是因为这样一换行就认为stra是个list了么?
额。。。好吧 你解决了就好 只是完全不清楚怎么这样子呢?那个 i 如果是int的就会
TypeError: cannot concatenate 'str' and 'int' objects
换行是没有关系的(只要格式正确) string+string还是个string ”+“就相当于一个string的_add_()函数
既然你报错TypeError: cannot concatenate 'unicode' and 'list' objects
看来什么地方被转成unicode的了。。。
不了解 日后得看看jython。。
sorry, 那个i是个字符串,字数满了就随便拿了个字母而已~
嗯,这个问题虽然我还没弄明白……多谢你了……
在确定list里的所有元素都是字符串的前提下,用字符串中的join()函数就可以实现:
str = "".join(lst) #""即空字符串 参考技术D 我试过了……没有报错呀……试试str(dbname)python怎么把字符串变成数字格式化
参考技术A 1. python 字符与数字如何转换python中字符与数字相互转换用chr()即可。
python中的字符数字之间的转换函数
int(x [,base ]) 将x转换为一个整数
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
plex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串
chr(65)='A'
ord('A')=65
int('2')=2;
str(2)='2'
扩展资料:
python数字转换为字符串主要包括两种形式:第一种是str(),将值转换为用户便于阅读的形式;另一种是repr(),将值转换为合法的python表达式。
>>> print repr("Hello, world!")
'Hello, world!'
>>> print repr(10000L)
10000L
>>> print str("Hello, world!")
Hello, world!
>>> print str(10000L)
2. python怎么实现字符串和数字的转换
#py3
from functools import reduce
DIGITS='0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9
def char2num(s): #单个字符转数字
return DIGITS[s]
def str2int(s):#整数字串转化整数,不支持浮点数.浮点数得另写一个
if s[0]=='-': #要判断一下该数字有没有符号
return -reduce(lambda x,y:10*x+y,map(char2num,s[1::])) #返回负数
else:
return reduce(lambda x,y:10*x+y,map(char2num,s)) #返回正数
a='-123'
print(100+str2int(a))
3. 关于python的字符串格式化
在python中也有类似于c中的printf()的格式输出标记。
在python中格式化输出字符串使用的是%运算符,通用的形式为格式标记字符串 % 要输出的值组其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。
重点来看左边的部分。左边部分的最简单形式为:%cdoe其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用'%s'来标记。
比如:'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])它的输出为'1 2.3 ['one', 'two', 'three']',就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,一样没有问题。
在这个过程中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个函数,可以用%r来标记。
除了%s外,还有很多类似的code:整型数:%d无符号整型数:%u八进制:%o十六进制:%x %X浮点数:%f科学记数法: %e %E根据数值的不同自动选择%e或%f: %g根据数值的不同自动选择%E或%f: %G就跟前面说用\进行转义一样,这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在”格式标记字符串“中输出%本身,可以用%%来表示。
上面说的只是格式标记的最简间的形式,来看复杂一点的:'%6.2f' % 1.235在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的:'%06.2f' % 1.235在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。
这一行的输出为'001.24',可以看到小数也占用一位。类似于这里0这样的标记还有-、+。
其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式:'%(name)s:%(score)06.1f' %'score':9.5, 'name':'newsim'这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。
前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键来指定。
这行代码的输出为:'newsim:0009.5'。有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。
可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:'%*.*f' % (6, 2, 2.345)就相当于'%6.2f' % 2.345。
这是这本书到此为止看起来最复杂的内容。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串。
这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。象C 中的sprintf函数一样,可以用“%”来格式化字符串Table 3.1. 字符串格式化代码格式 描述%% 百分号标记%c 字符及其ASCII码%s 字符串%d 有符号整数(十进制)%u 无符号整数(十进制)%o 无符号整数(八进制)%x 无符号整数(十六进制)%X 无符号整数(十六进制大写字符)%e 浮点数字(科学计数法)%E 浮点数字(科学计数法,用E代替e)%f 浮点数字(用小数点符号)%g 浮点数字(根据值的大小采用%e或%f)%G 浮点数字(类似于%g)%p 指针(用十六进制打印值的内存地址)%n 存储输出字符的数量放进参数列表的下一个变量中。
以上是关于Python中怎么把list转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章