小编Sha*_*ger的帖子

Python字符串中特殊字符存储不一致

版本是Python 3.7。我刚刚发现python有时会将字符ñ存储在具有多种表示形式的字符串中,而我完全不知道为什么或如何处理它。

我不确定显示此问题的最佳方法,所以我将仅显示一些代码输出。

我有两个字符串s1和s2都设置为相等 'Dan Pen?a'

它们都是字符串类型。

我可以运行代码:

print(s1 == s2) # prints false
print(len(s1)) # prints 8
print(len(s2)) # prints 9
print(type(s1)) # print 'str'
print(type(s2)) # print 'str'
for i in range(len(s1)):
    print(s1[i] + ", " + s2[i])
Run Code Online (Sandbox Code Playgroud)

循环的输出为:

D, D
a, a
n, n
 ,  
P, P
e, e
n?, n
a, ~
Run Code Online (Sandbox Code Playgroud)

那么,是否有任何python方法来处理这些不一致问题,或者至少有一些关于python什么时候使用哪种表示形式的规范?

很高兴知道Python为什么会选择以这种方式实现。

编辑:

一个字符串从Django数据库中检索,另一个字符串从解析列表目录调用中的文件名获得的字符串中。

from app.models import Model
from django.core.management.base import BaseCommand

class Command(BaseCommand):

    def handle(self, *args, **kwargs):
        load_dir = "load_dir_name"
        save_dir = "save_dir" …
Run Code Online (Sandbox Code Playgroud)

python string unicode-normalization python-3.x python-3.7

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

为什么我的阵列没有正确清空?

所以我将这个主数组保存在一个时间数组中。然后,我使用'\ 0'来“删除”其内部的主数组。在这一点上,如果我打印主数组,它将只打印空白。但是,如果那样的话,我使用for喜欢主数组=时间数组。x = 0 x <4 x ++时,它确实从另一个数组复制了四件事,但同时也打印了我执行“ \ 0”之前的内容

香港专业教育学院尝试了一段时间的柜台,但也没有工作。香港专业教育学院以前使用\ 0,它的工作idk为什么现在不工作

for(int y = 0; y <= strlen(numeros); y++){
    numeros[y] = '\0';
}

printf("%s\n", numeros);

for(int z = 0; z <= 4; z++){
    numeros[z] = numerosTemp[z];
}
    printf("%s\n", numeros);
Run Code Online (Sandbox Code Playgroud)

我的预期结果只是numerosTemp数组的前四个字母,但是它包含了我在\ 0之前曾经拥有的所有内容。但是在\ 0之后的printf中,它只会打印空白,所以我不明白为什么会这样

c arrays c-strings

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

std::this_thread::sleep_for() 与 main() 中的 sleep()

std::this_thread::sleep_for() 或 usleep()

在 main() 中使用什么会更好?这可能很愚蠢,但我是 C++11 功能的新手。

c++ sleep usleep c++11 stdthread

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

这两条线有什么区别?

friends = my[:] #1
friends[:] = my #2
Run Code Online (Sandbox Code Playgroud)

两个变量都可以是列表或字符串,即可迭代的。我正在学习蟒蛇。

  1. 我不明白这些线路是如何工作的。你能解释更多关于它们的信息吗?
  2. 两条线有什么区别?

python python-3.x

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

Python abs()函数在负数上失败

我在 linux 上使用 python3.6,遇到了一个非常明显的 abs() 函数失败。我的变量x最终变成了一个非常大的负数(可能是-inf),但绝对值abs()函数仍然返回一个负数,这应该是不可能的。我通过在abs()but....的输入中添加 0.1 来快速修复我的代码,我是否误解了abs()应该如何使用?

$> x
-9223372036854775808

$> abs(x)
-9223372036854775808

$> np.abs(x)
-9223372036854775808

$> abs(x+.1)
9.223372036854776e+18

$> np.abs(x+.1)
9.223372036854776e+18
Run Code Online (Sandbox Code Playgroud)

编辑:在下面解决了,但归结x为一个numpy.int64而不仅仅是int我不知道的。

python numpy absolute-value python-3.x python-3.6

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

是否有更惯用的方法来“插入或累积”到表示项目计数的 unordered_map 中?

考虑如下代码:

#include <iostream>
#include <unordered_map>

std::unordered_map<char, int> get_letter_frequencies(const std::string& str) {
    std::unordered_map<char, int> freqs;
    for (char ch : str) {
        auto iter = freqs.find(ch);
        if (iter == freqs.end()) {
            freqs[ch] = 1;
        } else {
            iter->second++;
        }
    }
    return freqs;
}

int main()
{
    std::string str = "AABBDBCABDA";
    auto freqs = get_letter_frequencies(str);
    std::cout << freqs['B'] << "\n";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它存储 unordered_map 中的字母计数。我的问题是有一段简洁/更惯用的代码可以用来替换

auto iter = freqs.find(ch);
if (iter == freqs.end()) {
    freqs[ch] = 1;
} else {
    iter->second++;
} …
Run Code Online (Sandbox Code Playgroud)

c++ unordered-map c++11

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

为什么`0.4/2`等于'0.2`同时`0.6/3`等于`0.19999999999999998`在python中?

我知道这些是浮点分割.但为什么这两个公式表现不同?

我做了一些调查,结果使我更加困惑:

>>>0.9/3
0.3

>>>1.2/3
0.39999999999999997

>>>1.5/3
0.5
Run Code Online (Sandbox Code Playgroud)

这里用什么逻辑来决定结果是用小数点后一位打印还是更多?

PS:我用python3.4做了上面的实验.

python floating-point floating-accuracy ieee-754

0
推荐指数
2
解决办法
1238
查看次数

如何将对象的选定属性放入python列表?

如何在python中创建具有对象的选定属性的列表?使用列表推导.

例如:

我的对象A有

A.name
A.age
A.height
Run Code Online (Sandbox Code Playgroud)

还有更多属性

如何创建列表 [name,age]

我可以手动完成,但看起来很难看:

l=[]
l.append(A.name)
l.append(A.age)
Run Code Online (Sandbox Code Playgroud)

但我正在寻找捷径.

python list-comprehension list python-2.x

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

使用python从条件列表创建列表

我有一个名单[7,1,2,2,3,1,2,3,3].所以我们必须创建另一个列表,其中包含如果原始元素是一次然后简单地追加,如果元素多次并且连续然后总结并添加到新列表中.上面列表的输出应该是[7,1,4,3,1,2,6]

任何帮助都很明显.

python sum python-2.7

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

如何在python中按名称杀死进程

>>> os.system('adb shell pidof logcat')

750 4774

0
>>> os.system('adb shell ps | grep logcat')

root      750   1     8760   1720  __skb_recv 7f8f5a5edc S /system/bin/logcat

root      4774  4681  8708   1696  __skb_recv 7f98efeedc S logcat
Run Code Online (Sandbox Code Playgroud)

logcat有2个过程。如何同时杀死两个进程ID:750 4774

python python-2.7

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