我有一个字符串变量是
temp = '1\2\3\4'
Run Code Online (Sandbox Code Playgroud)
我想在字符串变量中添加前缀“ r”并获取
r'1\2\3\4'
Run Code Online (Sandbox Code Playgroud)
这样我就可以基于'\'分割字符串。我尝试了以下方法:
r'temp'
'r' + temp
r + temp
Run Code Online (Sandbox Code Playgroud)
但以上方法均无效。有一个简单的方法吗?我正在使用python3。我也尝试使用
temp.encode('string-escape')
Run Code Online (Sandbox Code Playgroud)
但它返回以下错误
LookupError: unknown encoding: string-escape
Run Code Online (Sandbox Code Playgroud) 我试图使用python读取avro文件.
我成功安装了Apache Avro(我想我之所以这样做是因为我能够在python shell中"导入avro")遵循这里的指令
https://avro.apache.org/docs/1.8.1/gettingstartedpython.html
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试按照上述指令中的代码读取avro文件时.导入avro相关内容时,我一直收到错误.
>>> import avro.schema
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
import avro.schema
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 896, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1139, in find_spec
File "<frozen importlib._bootstrap_external>", line 1115, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1096, in _legacy_get_spec
File "<frozen importlib._bootstrap>", line 444, in spec_from_loader
File "<frozen importlib._bootstrap_external>", line 533, in spec_from_file_location
File "I:\Program …Run Code Online (Sandbox Code Playgroud) 我在Python中成功安装了Apache Avro。然后,我尝试按照以下说明将Avro文件读入Python。
https://avro.apache.org/docs/1.8.1/gettingstartedpython.html
Run Code Online (Sandbox Code Playgroud)
我的目录中有一堆Avros,该目录已经在Python中设置为正确的路径。这是我的代码:
import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
reader = DataFileReader(open("part-00000-of-01733.avro", "r"), DatumReader())
for user in reader:
print (user)
reader.close()
Run Code Online (Sandbox Code Playgroud)
但是,它返回此错误:
https://avro.apache.org/docs/1.8.1/gettingstartedpython.html
Run Code Online (Sandbox Code Playgroud)
我确实知道,在该指令的示例中,首先创建了一个架构。但是什么是avsc文件?在我的情况下,应如何创建它和相应的架构?理想情况下,我想将Avro文件读入Python,并将其保存为Python磁盘或数据框/列表类型中的csv格式,以进行进一步分析。我在Windows 7上使用Python 3。
编辑 我尝试了Stephane的代码,它返回了一个新的错误
import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
reader = DataFileReader(open("part-00000-of-01733.avro", "r"), DatumReader())
for user in reader:
print (user)
reader.close()
Run Code Online (Sandbox Code Playgroud)
EDITED2:Stephane的代码在大多数情况下都可以使用,但有时会引发这样的AssertionError
Traceback (most recent call last):
File "I:\DJ data\read avro.py", line 42, in <module>
for user in reader: …Run Code Online (Sandbox Code Playgroud) 我有好几本这样的字典
dict1 = {0: 33.422, 1: 39.2308, 2: 30.132}
dict2 = {0: 42.2422, 1: 43.342, 2: 42.424}
dict3 = {0: 13.422, 1: 9.2308, 2: 20.132}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用代码将它们组合成一本字典
dicts = dict1, dict2, dict3
Run Code Online (Sandbox Code Playgroud)
它返回这样的结果
({0: 33.422, 1: 39.2308, 2: 30.132}, {0: 42.2422, 1: 43.342, 2: 42.424}, {0: 13.422, 1: 9.2308, 2: 20.132})
Run Code Online (Sandbox Code Playgroud)
但是,如果字典按顺序出现呢?我怎样才能得到相同的结果?我尝试了以下代码
dicts = {}
dicts = dicts, dict1
dicts = dicts, dict2
dicts = dicts, dict3
Run Code Online (Sandbox Code Playgroud)
但它返回这样的结果
((({}, {0: 33.422, 1: 39.2308, 2: 30.132}), {0: 42.2422, 1: 43.342, 2: 42.424}), …Run Code Online (Sandbox Code Playgroud)