版本是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) 所以我将这个主数组保存在一个时间数组中。然后,我使用'\ 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中,它只会打印空白,所以我不明白为什么会这样
std::this_thread::sleep_for() 或 usleep()
在 main() 中使用什么会更好?这可能很愚蠢,但我是 C++11 功能的新手。
friends = my[:] #1
friends[:] = my #2
Run Code Online (Sandbox Code Playgroud)
两个变量都可以是列表或字符串,即可迭代的。我正在学习蟒蛇。
我在 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我不知道的。
考虑如下代码:
#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) 我知道这些是浮点分割.但为什么这两个公式表现不同?
我做了一些调查,结果使我更加困惑:
>>>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中创建具有对象的选定属性的列表?使用列表推导.
例如:
我的对象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)
但我正在寻找捷径.
我有一个名单[7,1,2,2,3,1,2,3,3].所以我们必须创建另一个列表,其中包含如果原始元素是一次然后简单地追加,如果元素多次并且连续然后总结并添加到新列表中.上面列表的输出应该是[7,1,4,3,1,2,6]
任何帮助都很明显.
>>> 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 ×7
python-3.x ×3
c++ ×2
c++11 ×2
python-2.7 ×2
arrays ×1
c ×1
c-strings ×1
ieee-754 ×1
list ×1
numpy ×1
python-2.x ×1
python-3.6 ×1
python-3.7 ×1
sleep ×1
stdthread ×1
string ×1
sum ×1
usleep ×1