您的位置 首页 > 数码极客

如何将浮点数转换为字符串,c语言字符串转换为浮点数… 无法将字符串转换为浮点数怎么办


我们总结了 Python 中的基本字符串操作。对于有经验的人来说可能还不够,但是...

(补充2018.12.23:print语法现已兼容Python3,如果Python2中复制粘贴的代码不起作用from __future__ import print_function,请放在代码端开头。)

Python 字符串 = 不可变

Python 字符串是不可变的,所以即使你想部分重写它们,你
也必须将它们组装成一个新的字符串对象。
例如,执行字符串替换的方法replace返回另一个字符串对象,其中包含替换的内容。

链接

使用运算符进行连接+。

a = 'Python' b = '2.7' c = a + b print(c) # => 'Py;

由于是按顺序处理的,即使连接很多也没关系

a = 'Python' b = ' is ' c = 'fancy' print(a + b + c) # => 'Python is fancy'

join还有一种使用方法和列表/元组连接的技术。
顺便说一句,ruby 的joinArray 方法(将连接的字符串作为参数),Python 的joinstr 方法(将列表/元组作为参数),反之亦然,所以如果你对 Ruby 有丰富的经验,你应该小心。

strings = ['dog', 'cat', 'penguin'] print(','.join(strings)) #=> 'dog,cat,penguin'

重复

如果重复相同的内容,如果*运算符给出一个整数,则会生成一个重复指定次数的字符串。

s = 'dog?' print(s * 3) #=> 'dog?dog?dog?'

嵌入价值

有三种方法可以将变量的值扩展为字符串。也许还有其他我不知道的。

  1. sprintf 风格: '%s, %s' % ('Hello', 'World')
  2. 扩展 sprintf 风格: '%(a)s, %(b)s' % dict(a='Hello', b='World')
  3. 使用格式方法: '{0}, {1}'.format('Hello', 'World')

(注)我不知道第二个的确切名称,但我决定将其称为扩展的 sprintf 样式。

sprintf 风格

如果你给一个带有操作符的字符串一个值或列表/元组%,它可以展开如下。

a = 'Python' b = 'a programming language' print('%s is %s' % (a, b)) # => 'Python is a programming language' c = 'World' print('Hello, %s!' % c) # => 'Hello, World!'

您还需要提供与字符串中的扩展符号(等等)一样多的值%s。它不能多或少。如果有一个扩展符号,%后面的值不需要是列表/元组。(也是由一个元素列表/元组展开)在上面的例子中,第一个print语句的模板字符串%s包含两个展开符号,所以%后面的值给出的元组元素个数也变成了两个。%如果要将字符本身保留为模板字符串中的字符,请%%使用'%' 2 characters。

有以下格式说明符。除非您确定,否则暂时离开%s它可能是个好主意。我想解释如何将格式说明符写入printf 的维基百科页面。

  • %s --展开为字符串
  • %d -- 展开为整数
  • %f -- 扩展为小数点

如果您想将元组和列表扩展为'(1, 2, 3)'字符串,例如

tuple_var = (1, 2, 3) print('tuple_var is: %s' % (tuple_var,))

如果你不这样做,你会生气,就像只有一个可以替换的占位符一样,即使有三个,所以要小心。

扩展的 sprintf 风格

* 扩展 sprintf 风格是我给自己起的名字 (^^;

在格式字符串后面的括号中指定dict对象的key,在格式字符串%的运算符右侧指定dict对象%。如果在重复嵌入相同的值时已经有一个 dict 变量,这很有用。

v = dict(first='Michael', family='Jackson') print('He is %(first)s, %(first)s %(family)s.' % v)

格式方法的使用

format您可以通过使用format方法来使用特定于方法的模板语言。

print('{0}, {1}'.format('Hello', 'World')) #=> 'Hello, World'

有关更多详细信息,请参阅格式化迷你语言规范。

代替

s = 'Today is Monday.' ss = s.replace('Monday', 'Sunday') #=> 'Today is Sunday.' print(ss) s2 = 'Hello Hello' ss2 = ('Hello', 'Bye') #=> 'Bye Bye' 第三引数を指定しなければすべて置換される print(ss2) s3 = 'World World' ss3 = ('World', 'Hello', 1) #=> 'Hello World' # 第三匹数で置換する個数を指定 print(ss3)

对于按照某种模式替换字符串等处理,使用re(正则表达式)包的sub方法。

import re s = 'Hello World' prin(r"[a-z]", "A", s)) #=> 'HAAAA WAAAA'

获取第 N 个字符

s = 'abc' n = 1 # 'a'がほしい print(s[n-1]) # 0ベースインデックスで文字を取得 s2 = 'xyz' print(s[-1]) # 'z' 最後の文字

获取一个子串(从第N个字符中取出M个字符)

s = "This is a pen." n = 1 m = 4 print(s[n-1:n-1+m]) # 'This' print(s[0:4]) # 'This' print(s[-4:-1]) # 'pen'

搜索

find用来。当您想向后搜索时可以使用它rfind。
find 如果找到相应的字符串,则返回从 0 开始的字符串位置,如果没有找到,则返回 -1。

s = 'abcabcabc' index = s.find('b') # indexは1(2文字目)

您可以使用第二个参数指定开始搜索的位置。

s = 'abcabcabc' index = s.find('b', 2) # indexは4(5文字目)

您可以使用以下代码在字符串中找到所有目标。

s = 'abcabcabc' target = 'b' index = -1 while True: index = s.find(target, index + 1) if index == -1: break print('start=%d' % index)

一次处理一个字符

由于字符串类型也是一个迭代器,所以可以用for进行如下处理。我希望你想要一个字符列表list(strvalue)。

for c in 'aiueo': print(c) print(list('hoge')) # => ['h', 'o', 'g', 'e']

可能有一种方法可以在引用索引中的字符时进行提取。

s = 'aiueo' for i in range(len(s)): c = s[i] print(c)

去掉两端的空白

strip,,可以使用lstrip。 strip 是一个字符串,从两端删除了空格、制表符和换行符(\r 和 \n), lstrip 仅对左端应用与 strip 相同的处理,而 rstrip 仅对 strip 应用相同的处理右端。返回应用的内容。rstrip


s = ' x ' print('A' + s.strip() + 'B') # => 'AxB' print('A' + s.lstrip() + 'B') # => 'Ax B' print('A' + s.rstrip() + 'B') # => 'A xB'

删除换行符(相当于perl或ruby chomp的处理)

rstrip看起来可以做到。但是,如果有两个结尾有空格和换行符的模式,并且您只想删除换行符,则需要使用参数指定要删除的字符。

line = 'hoge\n' msg = line.rstrip() + 'moge' print(msg) # => 'hogemoge' with open('.;) as fh: for line in fh: no_line_break_line = line.rstrip() # なにかする # 空白は削除せずに改行だけ削除する line_with_space = 'line \n' # 改行の前の空白は削除したくない prin('\n')) # => 'line '

全部大写

upper()使用方法。

print('hello'.upper()) # => 'HELLO'

全部小写

lower()使用方法。

print('BIG'.lower()) # => 'big'

找出字符串是否作为子字符串包含在内

s = 'abc' print('b' in s) #=> True print('x' in s) #=> False

计算字符串作为子字符串出现的次数

find您可以使用之前提出的方法自己做,count但是有一个方便的方法。

s = 'aaabbc' prin('b')) #=> 2

将 int 转换为字符串

v = 1 print(str(v)) print('%d' % v)

将浮点数转换为字符串

f = 1.234 print(str(f)) #=> '1.234' print('%f' % f) #=> '1.234000'

将列表转换为字符串,将元组转换为字符串

有时您想在调试打印等中将其表示为字符串。

v = [1,2,3] print(str(v)) #=> '[1, 2, 3]' print('%s' % v) #=> '[1, 2, 3]'

%s如果您尝试显示一个元组,Python 会将给定的元组解释为模板的值列表,您将收到错误消息。

v = (1, 2, 3) print(str(v)) #=> '(1, 2, 3)' よい例 print('%s' % v) #=> '(1, 2, 3)'を期待するが、TypeErrorになってしまう print('%s' % (v,)) #=> '(1, 2, 3)' よい例

join尝试使用诸如组装也很好。

v = [1,2,3] print('<' + ('/'.join([ str(item) for item in v ])) + '>') #=> '<1/2/3>'

tuple对象也是如此。

将字典转换为字符串

有时您想在调试打印等中将其表示为字符串。

v = dict(a=1, b=2) print(str(v)) #=> "{'a': 1, 'b': 2}" print('%s' % v) #=> "{'a': 1, 'b': 2}"

keys您还可以使用或列表理解join生成一个带有一个衬里的字符串。

v = dict(a=1, b=2) print('<' + ', '.join([ '%s=%s' % (k, v[k]) for k in v.keys() ]) + '>') #=> '<a=1, b=2>'

使字节成为 unicode 字符串

从文件或套接字读取的数据(以二进制模式打开)是字节字符串,因此如果不将其解释为 unicode 字符串,将无法以字符为单位进行操作。Python2系列(2.7等)中区分str(字节串)和unicode(字符串),在Web应用等期望输入多字节字符的场景中,最好把字符串当作unicode对象... 使用一种方法将字节字符串解释为具有指定编码的 unicode 字符串decode()。

Python3系列中strtype为字符串类型(对应Python2系列unicode类型),bytestype为byte字符串类型(对应Python2系列str类型)。

with open('u;, 'rb') as fh: # rbなのでバイナリモード byte_content = () # ぜんぶ読み込む, この時点ではバイト列 print(len(byte_content)) # バイト数 unicode_string = by('utf-8') # utf-8エンコーディングで、文字の並びとして解釈 print(len(unicode_string)) # 文字数

decode()该方法的默认编码是,utf-8如果您知道要解释的字节字符串的编码是 UTF-8,则可以省略编码。

bytes_data = b'\xe3\x83\x90\xe3\x82\xa4\xe3\x83\x88\xe5\x88\x97' prin()) # => 'バイト列'

日语中常用的编码如下所示。

  • utf_8UTF-8(别名utf-8 U8 utf8 cp65001:)
  • shift_jisShift JIS(也称为csshiftjis shiftjis sjis s_jis:)
  • cp932Shift JIS(扩展移位 JIS)(也称为932 ms932 mskanji mks-kanji:)
  • euc_jpEUC-JP(也称为eucjp ujis u-jis:)
  • iso2022_jpcsiso2022jp iso2022jp iso-2022-jpJIS (ISO-2022-JP ) (别名:)

Python 支持的其他编码codecs可以在包页面找到:https ://docs.python.org/ja/3/library/codecs.html

将 unicode 字符串转换为字节

相反,当写入文件或套接字(以二进制模式打开)时,字符串必须是字节字符串。在这种情况下,使用unicode object的encode()方法。

unicode_string = u'マルチバイト文字の文字列' with open('./u;, 'wb') as fh: # 書き込み+バイナリモードでopen byte_content = unicode_('utf-8') # utf-8エンコーディングで表現した場合のバイト列を取得 (byte_content) # バイト列を書き込み

encode()utf-8该方法也表现得好像它是在没有传递编码的情况下传递的。

str_data = 'バイト列' prin()) # => b'\xe3\x83\x90\xe3\x82\xa4\xe3\x83\x88\xe5\x88\x97'

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何将浮点数转换为字符串,c语言字符串转换为浮点数,如何把浮点数转换成字符串,c语言浮点数转换为字符串,整数,浮点数和字符串之间的转换”边界阅读