从pdf文件中提取和打印table时如何去掉'\r'?
How to get rid of '\r' when exttracting and printing a table from a pdf file?
异议是从给定的 PDF 文件中提取 table 并将整个 table 转换为 pd 数据帧以供进一步操作。显然,整个table里面只会包含字符串。
虽然代码本身正在运行,但在将提取的 table 转换为数据帧时,每个最初在其单元格中从 table 中断的字符串都出现在其间的“\r”单词
示例:
单元格中的原始外观:“Neues
什么..."
应该看起来像:“Neues Wh...”
转换为 df 后的结果:“Neues\rWh...”
查看下面我的代码:
import pandas as pd
import win32com.client
from win32com.client import Dispatch, constants
import codecs
import os
import io
import tabula
from tabula import read_pdf
from tabulate import tabulate
mapping = {df.columns[0]: 'x1',
df.columns[1]: 'x2',
df.columns[2]: 'x3',
df.columns[3]: 'x4?',
df.columns[4]: 'x5',
df.columns[5]: 'x6',
df.columns[6]: 'x7',
df.columns[7]: 'x8'}
pdf_template_path = os.path.join(r'H:\folder\ pdf-file')
pdf_template_path1 = pdf_template_path + '.pdf'
pdf_table = read_pdf(pdf_template_path1,
pages = 'all',
multiple_tables = True,
lattice= True,
pandas_options={'header': None}
)
# Transform the result into a string table format
table = tabulate(pdf_table)
# Transform the table into dataframe
df = pd.read_fwf(io.StringIO(table))
df.rename(columns= mapping, inplace= True)
df_pdf.style.set_properties(subset=['Beschreibung'], **{'width': '300px'})
display(df.head())
df.shape
结果如下:
result
如图所示,有时单词之间会出现回车Return序列“\r”,即:'Neues\rWh..',但结果应该是这样的:'Neues Wh..'.
我试过像 replace():
这样的方法
df = df.replace('\r', '', regex= True)
编辑:
但它没有用,因为 df 中的字符串保持不变,请参阅
结果图片:
result after df_replace
感谢您的建议。
已解决。
这里的解决方案是:
df = df.replace(r'\r', ' ', regex= True)
as r'\'
禁用第一个 \
。因此,'\r'
可以作为字符串的普通字符处理。
异议是从给定的 PDF 文件中提取 table 并将整个 table 转换为 pd 数据帧以供进一步操作。显然,整个table里面只会包含字符串。
虽然代码本身正在运行,但在将提取的 table 转换为数据帧时,每个最初在其单元格中从 table 中断的字符串都出现在其间的“\r”单词
示例: 单元格中的原始外观:“Neues 什么..."
应该看起来像:“Neues Wh...”
转换为 df 后的结果:“Neues\rWh...”
查看下面我的代码:
import pandas as pd
import win32com.client
from win32com.client import Dispatch, constants
import codecs
import os
import io
import tabula
from tabula import read_pdf
from tabulate import tabulate
mapping = {df.columns[0]: 'x1',
df.columns[1]: 'x2',
df.columns[2]: 'x3',
df.columns[3]: 'x4?',
df.columns[4]: 'x5',
df.columns[5]: 'x6',
df.columns[6]: 'x7',
df.columns[7]: 'x8'}
pdf_template_path = os.path.join(r'H:\folder\ pdf-file')
pdf_template_path1 = pdf_template_path + '.pdf'
pdf_table = read_pdf(pdf_template_path1,
pages = 'all',
multiple_tables = True,
lattice= True,
pandas_options={'header': None}
)
# Transform the result into a string table format
table = tabulate(pdf_table)
# Transform the table into dataframe
df = pd.read_fwf(io.StringIO(table))
df.rename(columns= mapping, inplace= True)
df_pdf.style.set_properties(subset=['Beschreibung'], **{'width': '300px'})
display(df.head())
df.shape
结果如下: result
如图所示,有时单词之间会出现回车Return序列“\r”,即:'Neues\rWh..',但结果应该是这样的:'Neues Wh..'.
我试过像 replace():
这样的方法df = df.replace('\r', '', regex= True)
编辑: 但它没有用,因为 df 中的字符串保持不变,请参阅 结果图片: result after df_replace
感谢您的建议。
已解决。 这里的解决方案是:
df = df.replace(r'\r', ' ', regex= True)
as r'\'
禁用第一个 \
。因此,'\r'
可以作为字符串的普通字符处理。