相关疑难解决方法(0)

将列表中的项连接到字符串

有没有更简单的方法将列表中的字符串项连接成一个字符串?

我可以使用该str.join()功能加入列表中的项目吗?

例如,这是输入['this','is','a','sentence'],这是所需的输出this-is-a-sentence

sentence = ['this','is','a','sentence']
sent_str = ""
for i in sentence:
    sent_str += str(i) + "-"
sent_str = sent_str[:-1]
print sent_str
Run Code Online (Sandbox Code Playgroud)

python string join list concatenation

478
推荐指数
7
解决办法
99万
查看次数

哪个是在Python中连接字符串的首选方法?

由于Python string无法更改,我想知道如何更有效地连接字符串?

我可以这样写:

s += stringfromelsewhere
Run Code Online (Sandbox Code Playgroud)

或者像这样:

s = []
s.append(somestring)

later

s = ''.join(s)
Run Code Online (Sandbox Code Playgroud)

在写这个问题时,我发现了一篇很好的文章谈论这个话题.

http://www.skymind.com/~ocrow/python_string/

但它是在Python 2.x.中,所以问题是在Python 3中做了哪些改变?

python string concat python-3.x

325
推荐指数
10
解决办法
62万
查看次数

如何在Python中的String中放置一个变量?

我想int加入一个string.这就是我现在正在做的事情:

num = 40
plot.savefig('hanning40.pdf') #problem line
Run Code Online (Sandbox Code Playgroud)

我必须运行几个不同数字的程序,而不是两个40.所以我想做一个循环但插入这样的变量不起作用:

plot.savefig('hanning', num, '.pdf')
Run Code Online (Sandbox Code Playgroud)

如何将变量插入Python字符串?

python string variables

218
推荐指数
6
解决办法
64万
查看次数

python中最有效的字符串连接方法是什么?

有没有在Python任何有效的质量字符串连接方法(如StringBuilder的 C#或StringBuffer的在Java中)?我在这里找到了以下方法:

  • 使用简单连接 +
  • 使用字符串列表和join方法
  • 使用UserString来自MutableString模块
  • 使用字符数组和array模块
  • 使用cStringIO来自StringIO模块

但是,您的专家使用或建议了什么?为什么?

[ 这里的相关问题 ]

python string

131
推荐指数
7
解决办法
10万
查看次数

有什么理由不使用'+'连接两个字符串?

Python中常见的反模式是+在循环中连接一系列字符串.这很糟糕,因为Python解释器必须为每次迭代创建一个新的字符串对象,并最终获得二次时间.(在某些情况下,CPython的最新版本显然可以优化它,但是其他实现不能,因此不鼓励程序员依赖它.)''.join是正确的方法.

不过,我听人说(这里包括对堆栈溢出),你应该永远不会使用+字符串连接,而是始终使用''.join或格式字符串.我不明白为什么如果你只是连接两个字符串就是这种情况.如果我的理解是正确的,它不应该花费二次时间,我认为a + b比任何一个''.join((a, b))或更清晰,更可读'%s%s' % (a, b).

+用于连接两个字符串是一种好习惯吗?还是有一个我不知道的问题?

python anti-patterns string-concatenation

117
推荐指数
4
解决办法
18万
查看次数

在Python中读取Excel文件

我有一个Excel文件

Arm_id      DSPName        DSPCode          HubCode          PinCode    PPTL
1            JaVAS            01              AGR             282001    1,2
2            JaVAS            01              AGR             282002    3,4
3            JaVAS            01              AGR             282003    5,6
Run Code Online (Sandbox Code Playgroud)

我想在表单中保存一个字符串Arm_id,DSPCode,Pincode.此格式是可配置的,即它可能会更改为DSPCode,Arm_id,Pincode.我将格式保存在列表中

FORMAT = ['Arm_id', 'DSPName', 'Pincode']
Run Code Online (Sandbox Code Playgroud)

如果可配置,我如何阅读具有提供名称的特定列的内容FORMAT.

这是我试过的.目前我能够阅读文件中的所有内容

from xlrd import open_workbook
wb = open_workbook('sample.xls')
for s in wb.sheets():
    #print 'Sheet:',s.name
    values = []
    for row in range(s.nrows):
        col_value = []
        for col in range(s.ncols):
            value  = (s.cell(row,col).value)
            try : value = str(int(value))
            except : pass
            col_value.append(value)
        values.append(col_value)
print …
Run Code Online (Sandbox Code Playgroud)

python excel xlrd

77
推荐指数
4
解决办法
33万
查看次数

为什么天真的字符串连接在一定长度之上变成二次方?

通过重复的字符串连接来构建字符串是一种反模式,但我仍然很好奇为什么它的性能在字符串长度超过大约10**6后从线性切换到二次方:

# this will take time linear in n with the optimization
# and quadratic time without the optimization
import time
start = time.perf_counter()
s = ''
for i in range(n):
    s += 'a'
total_time = time.perf_counter() - start
time_per_iteration = total_time / n
Run Code Online (Sandbox Code Playgroud)

例如,在我的机器上(Windows 10,python 3.6.1):

  • 因为10 ** 4 < n < 10 ** 6,time_per_iteration几乎完全恒定在170±10μs
  • 因为10 ** 6 < n,time_per_iteration几乎是完全线性的,达到520μs n == 10 ** 7.

线性增长time_per_iteration相当于二次增长total_time. …

python cpython python-internals

13
推荐指数
1
解决办法
1019
查看次数

如何在 UUID 字符串中插入连字符?

我想创建一个函数,-在 UUID 字符串的位置 8、12、16、20 上添加一个。

例子:

Original: 76684739331d422cb93e5057c112b637
New: 76684739-331d-422c-b93e-5057c112b637
Run Code Online (Sandbox Code Playgroud)

我不知道如何将它放置在看起来不像意大利面条代码的字符串中的多个位置。

python uuid

3
推荐指数
1
解决办法
3718
查看次数

在Python中附加到字符串的正确方法

我读过这个回复,它解释了 CPython 有一个优化,可以在使用a = a + bor附加到字符串时执行就地附加,无需复制a += b。我还阅读了这个 PEP8 建议:

\n
\n

代码的编写方式不应损害其他 Python 实现(PyPy、Jython、IronPython、Cython、Psyco 等)。例如,不要依赖 CPython\xe2\x80\x99 对形式 a += b 或 a = a + b 中的语句进行就地字符串连接的高效实现。即使在 CPython 中,这种优化也是脆弱的(它仅适用于某些类型),并且在不使用引用计数的实现中根本不存在。在库的性能敏感部分,应使用\'\'.join() 形式。这将确保在各种实现中以线性时间进行串联。

\n
\n

因此,如果我理解正确,a += b + c正确的方法是调用a = \'\'.join([a, b, c])?

\n

但是为什么这个形式join比本例中的形式慢得多+=(在loop1中我故意使用a = a + b + c以避免触发CPython优化)?

\n
import os\nimport time\n\nif __name__ == "__main__":\n    start_time = time.time()\n    print("begin: %s " …
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
1
解决办法
1484
查看次数

将函数打印输出分配给字符串变量

我有以下功能,循环通过两个列表,打印出一系列蔬菜,然后是水果.

def Selection():
    print("VEGETABLES FOR THE WEEK:\n")
    for veg in veg_selection:
        print(veg.upper())
    print("\n")
    print("FRUITS FOR THE WEEK:\n")
    for fruit in fruit_selection:
        print(fruit.upper())
Run Code Online (Sandbox Code Playgroud)

所以结果可能如下:

VEGETABLES FOR THE WEEK:

BROCOLLI
PEAS
CARROTS
SWEET CORN
WHITE ONIONS


FRUITS FOR THE WEEK:

GRAPEFRUIT
CHERRIES
ORANGE
COCONUT
RASPBERRIES
Run Code Online (Sandbox Code Playgroud)

我正在努力将函数的打印结果分配给包含格式化字符串的单个变量.我是否需要将结果保存为文本文件然后再次读取?我可以使用文本连接吗?我不确定如何处理函数中的for循环?任何帮助真的很感激.

python list

0
推荐指数
1
解决办法
824
查看次数